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等等。很多必须要在窗口生命周期回调中访问磁盘的时候,主活动访问网络操作的时候使用严苛模式可以帮你解决这些问题。

转载于:https://my.oschina.net/yaowen424/blog/528542

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值