您的位置:首页 > 移动开发 > Android开发

Android(StrictMode)严苛模式介绍

2015-11-10 00:00 363 查看
摘要: StrictMode通常用于抓取在应用程序的主线程中来操作磁盘或者网络访问的问题,比如界面操作和动画,在非UI线程中处理磁盘文件和网络操作使得程序更快、响应更及时,在保证你的程序足够流程的同时,你还需要组织ANR事件的发生。

在项目中通过StrictMode我解决了很多效率问题,有必要记录一下。

StrictMode是一种通过事故来吸引你的注意及发现你可能需要优化问题的一种开发者工具。

StrictMode通常用于抓取在应用程序的主线程中来操作磁盘或者网络访问的问题,比如界面操作和动画,在非UI线程中处理磁盘文件和网络操作使得程序更快、响应更及时,在保证你的程序足够流程的同时,你还需要组织ANR事件的发生。

下面是启用StrictMode的实例,最好尽早启用它,比如在应用程序、窗口或者其它应用程序组件的onCreate()方法中调用它,并且在

setContentView(R.layout.activity_main);

这句话后面启用它:

......
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//启动Android的严苛模式,允许主活动访问网络操作...
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()   // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());

......


你可以确定当异常是怎么产生的,由于什么原因产生的时候,比如,使用StrictMode的penaltyLog()方法你可以在应用发生异常时查看adb logcat的输出。

当你发现一个比较严重的异常时,Android提供了一系列的工具来解决它:线程、Handler、AsyncTask、IntentService等等。很多必须要在窗口生命周期回调中访问磁盘的时候,主活动访问网络操作的时候使用严苛模式可以帮你解决这些问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  严苛模式 StrictMode