Google严苛模式【调试、优化、检查】让你的APP更优,突破优化瓶颈

来源:互联网 发布:spring切面编程 注解 编辑:程序博客网 时间:2024/05/16 16:15

1.什么是严苛模式(StrictMode)

这里写图片描述

StrictMode是一个开发工具,检测到你可能的事情 偶然做的就让你的注意力,这样你就可以修复 他们。

StrictMode是最常用的磁盘或意外 网络访问应用程序的主线程,UI 操作和动画进行接收。 保持磁盘 和网络业务主线程会更为顺畅, 应用程序更加敏感。 通过保持应用程序的主线程 响应,你也阻止 ANR对话框 显示给用户。

注意,即使Android设备的磁盘 通常在闪存,很多设备文件系统上运行 记忆有非常有限的并发。 这是常有的事 几乎所有的磁盘访问都是快,但在个别情况下可能 大幅放缓时,在后台发生的某些I / O 从其他进程。 如果可能的话,最好是假设等 事情并不快。

2.严苛模式的用法

google的示例如下:

public void onCreate() {     if (DEVELOPER_MODE) {         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());     }     super.onCreate(); }

只需要在super.onCreate()方法加上这句就OK了

3.优化严苛模式,让它成为真正的工具

我们可以写到BaseActivity中,让其他Activity继承自这个BaseActivity,并且设置一个开关来控制它DEVELOPER_MODE

4.查看log日子信息

先看下边一段代码

/** * Created by zsl on 2014/12/31. */public class StrictModeActivity extends BaseActivity implements BaseActivityInterface,View.OnClickListener {    @Override    protected void onCreate(Bundle savedInstanceState) {        AppConfig.setDeveloperMode();        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initEvent();        initData();    }    @Override    public void initView() {    }    @Override    public void initEvent() {    }    @Override    public void initData() {        String url="http://g.hiphotos.baidu.com/image/w%3D310/sign=7725d8ccd3a20cf44690f8de46084b0c/e1fe9925bc315c601a0f34a48eb1cb13485477e6.jpg";        try {            URL url1 = new URL(url);            HttpURLConnection connection = (HttpURLConnection) url1.openConnection();            connection.setConnectTimeout(15000);            connection.setReadTimeout(10000);            connection.setRequestMethod("GET");            connection.setDoInput(true);            connection.connect();            connection.getInputStream();        } catch (IOException e) {            e.printStackTrace();        }    }    @Override    public void onClick(View v) {        switch (v.getId()){            case 1:{                break;            }            default:{                break;            }        }    }}

我是在主线程去直接访问了网络,一般情况下我们如果这样做了,网络状况好的情况下,不会有任何的影响。
但是我们加上严苛模式以后的查看一下会有什么效果呢?

这里写图片描述

log日子中会报错,并且出现StrictMode的关键字,并且会爆出错误的原因和需要改进的地方
最后在模拟器上会重新弹出一个不可点击的界面,这就说明你需要做一些优化了

5.总结

严苛模式检查什么?
检查在主线程的耗时操作:网络访问、复杂动画、磁盘读写,等

6 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 买的商业预付卡怎么办 壹钱包预付卡金额不足怎么办 美发店换老板原来预付卡怎么办 超市预付卡现超市停业怎么办? 利群购物卡丢了怎么办 利群金卡丢了怎么办 坐飞机洗漱用品超过规定怎么办 请律师团了解后怎么办 三星s9开不了机怎么办 三星手机开不了机了怎么办 安卓手机音响进水了怎么办 音响不读u盘怎么办 虎牌水壶显示f2怎么办 海尔冰箱门关不严没吸力怎么办 忘记京东金融账号怎么办 京东账号手机号已停用怎么办 京东账户忘了怎么办 京东登录名忘了怎么办? 京东已经发货了怎么办 苹果7p黑亮掉漆怎么办 淘宝卖家不肯退运费怎么办 健身付款收据丢了怎么办 收据丢了怎么办能退款 苹果售后不承认基带问题怎么办 电话卡欠费了不用了怎么办 软件移不到sd卡怎么办 手机显示sd卡受损怎么办 美的冰箱出现e6怎么办 美的冰箱显示e6怎么办 冰箱电脑板坏了怎么办 笔记本网线接口坏了怎么办 蓝p吃了一片 怎么办 sd卡上锁了忘记密码怎么办 手机sd卡被锁定怎么办 冰箱制冷管堵了怎么办 冰箱的管子破了怎么办 淘宝京东e卡冻结怎么办 苏宁任性付冻结怎么办 苏宁订单删除了怎么办 联通销户话费有余额怎么办 暖气改地热不热怎么办