严苛模式 strictmode

参考链接 http://blog.csdn.net/brokge/article/details/8543145

一、严苛模式-虚拟机策略

虚拟机策略(VmPolicy)能检查内存泄漏,譬如,当关闭一个SQLite对象前的完结操作,或其他任何类似可关闭对象在关闭前的完结操作。虚拟机策略(VmPolicy)由一个类似的Builder类创建,如列表2-10所示。和线程策略(ThreadPolicy)不同的是,虚拟机策略(VmPolicy)不能通过一个对话框提供警告。

StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()  

    .detectLeakedSqlLiteObjects()  

    .penaltyLog()  

    .penaltyDeath()  

    .build());  

 

二、严苛模式-线程策略

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

它主要针对主线程(或UI线程)。由于在主线程中读写磁盘和进行网络访问都不是好的做法,Google已经在磁盘和网络代码中添加了严苛模式(StrictMode)钩子(hook)。如果你对某个线程打开严苛模式(StrictMode),当那个线程进行磁盘和网络访问,你将获得警告。你可以选择警告方式。一些违例包含用户慢速调用(custom slow calls 这么翻译行吗?),磁盘读写,网络访问。你能选择将警告写入LogCat,显示一个对话框,闪下屏幕,写入DropBox日志文件,或让应用崩溃。最通常的做法是写入LogCat或让应用崩溃。
你不需要频繁打开严苛模式(StrictMode),你可以在主活动的onCreate()函数中打开它,你也可以在Application派生类的OnCreate()函数中设置严苛模式(StrictMode)。
                            
posted @ 2016-03-18 15:14  lipeil  阅读(453)  评论(0编辑  收藏  举报