android strict mode

来源:互联网 发布:qq刷访客软件 编辑:程序博客网 时间:2024/06/05 05:41

安卓2.3后强大的检测工具StrictMode

如果是2.3之前的,则通过反射机制检查,没有strict mode


try {
    Class sMode = Class.forName("android.os.StrictMode");
    Method enableDefaults = sMode.getMethod("enableDefaults");
    enableDefaults.invoke(null);
}
catch(Exception e) {
    // StrictMode not supported on this device, punt
    Log.v("StrictMode", "... not supported. Skipping...");
}



可以检查磁盘读写,网络访问,以及线程检查,内存泄露等。


StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
    .detectDiskReads()
    .detectDiskWrites()
    .detectNetwork()
    .penaltyLog()

   .build());


不需要频繁打开严苛模式(StrictMode),你可以在主活动的onCreate()函数中打开它,你也可以在Application派生类的OnCreate()函数中设置严苛模式(StrictMode)。线程中运行的任何代码都可以设置严苛模式(StrictMode),但你的确只需要设置一次,一次就够了。


类似于线程策略(ThreadPolicy),严苛模式(StrictMode)有虚拟机策略(VmPolicy)。虚拟机策略(VmPolicy)能检查内存泄漏,譬如,当关闭一个SQLite对象前的完结操作,或其他任何类似可关闭对象在关闭前的完结操作。虚拟机策略(VmPolicy)由一个类似的Builder类创建。

StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
    .detectLeakedSqlLiteObjects()
    .penaltyLog()
    .penaltyDeath()
    .build());


点击打开链接


0 0
原创粉丝点击