Android(StrictMode)严苛模式介绍

    在项目中通过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,严苛模式)