文档章节

Android(StrictMode)严苛模式介绍

茗香墨语
 茗香墨语
发布于 2015/11/10 15:37
字数 499
阅读 602
收藏 1

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

© 著作权归作者所有

共有 人打赏支持
茗香墨语
粉丝 10
博文 41
码字总数 27952
作品 0
广州
程序员
私信 提问
Android StrictMode详解

StrictMode有多种不同的策略,每一种策略又有不同的规则,当开发者违背某个规则时,每个策略都有不同的方法去显示提醒用户。在本文中,将举例子说明如何使用在Android 中使用 StrictMode。 ...

恰同学少年
2015/08/02
0
0
Android应用内存泄漏的定位、分析与解决策略

Hello,大家好,我是Clock。翻了一下简书,发现有一个多月没有更新博客,本来今天打算和妹纸去电影院看《你的名字》,然后再去到处浪的。 结果因为妹纸公司临时有事,她不得不回公司一趟......

D_clock爱吃葱花
2018/06/29
0
0
Android-StrictMode限制模式API加速你的应用

从Android 2.3开始提供了一个新的类名为StrictMode可以帮助开发者改进你的Android应用,StrictMode通常可以捕捉到发生在磁盘或网络访问的应用主线程中,可以让主线程处理UI和动画在磁盘读写和...

鉴客
2011/10/28
1K
1
Android最佳实践之:StrictMode介绍

  StrictMode有多种不同的策略,每一种策略又有不同的规则,当开发者违背某个规则时,每个策略都有不同的方法去显示提醒用户。在本文中,将举例子说明如何使用在Android 中使用 StrictMode...

天空风
2012/04/24
0
0
Android性能优化之StrictMode使用

严苛模式是一个开发工具,能够检测程序中的违例,主要功能就是帮助我们发现一些不规范的代码例如在主线程中操作数据库的读写、磁盘读写访问网络等耗时操作。目前能有两大策略,线程策略(Thr...

正阳Android
2017/12/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《人月神话》读后感

前两天看完了《人月神话》,最初是被这本书的名字吸引了,然后再在上搜了一下,人月确实是一个神话,那种不可能实现的神话……(!| ̄▽ ̄) 好久没有看过这种每章开始都引用一段名人名言的书了...

ninjaFrog
昨天
3
0
matlab-线性代数 施密特正交化

  matlab : R2018a 64bit     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   code clearclc% 施密特正......

志成就
昨天
2
0
08 分支管理 —— 多人协作

08 分支管理 —— 多人协作 多人协作 本节内容: 查看远程库信息,使用git remote -v;本地新建的分支如果不推送到远程,对其他人就是不可见的;从本地推送分支,使用git push origin bra...

lwenhao
昨天
4
0
开始使用Filebeat

认识Beats Beats是用于单用途数据托运人的平台。它们以轻量级代理的形式安装,并将来自成百上千台机器的数据发送到Logstash或Elasticsearch。 (画外音:通俗地理解,就是采集数据,并上报到...

北极南哥
昨天
6
0
shell getopts template

!/bin/bash# ------------------------------------------------------------------# [Author] Title# Description# ---------------------------------------------------......

易野
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部