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

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.总结

严苛模式检查什么?

检查在主线程的耗时操作:网络访问、复杂动画、磁盘读写,等

时间: 2024-10-15 01:26:58

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

严苛模式(StrictMode)

Android 2.3提供一个称为严苛模式(StrictMode)的调试特性,Google称该特性已经使数百个Android上的Google应用程序受益.那它都做什么呢?它将报告与线程及虚拟机相关的策略违例.一旦检測到策略违例(policy violation),你将获得警告,其包括了一个栈trace显示你的应用在何处发生违例.你能够强制用警告取代崩溃(crash),也能够仅将警告计入日志,让你的应用继续运行.策略的细节尚难确定,能够期待随Android的成熟Google将添加很多其它策略. 眼

Android严苛模式StrictMode使用详解

StrictMode类是Android 2.3 (API 9)引入的一个工具类,可以用来帮助开发者发现代码中的一些不规范的问题,以达到提升应用响应能力的目的.举个例子来说,如果开发者在UI线程中进行了网络操作或者文件系统的操作,而这些缓慢的操作会严重影响应用的响应能力,甚至出现ANR对话框.为了在开发中发现这些容易忽略的问题,我们使用StrictMode,系统检测出主线程违例的情况并做出相应的反应,最终帮助开发者优化和改善代码逻辑. 官网文档:http://developer.android.c

设置Eclipse可以Debug模式调试JDK源码,并显示局部变量的1

最近突然萌发了研究JDK源码的想法,所以就想到了在自己常用的Eclipse上可以调试JDK源码. 整个设置过程也很简单: 首先你要安装好JDK(我的JDK安装路径根目录是D:\Java\jdk-8u92-windows-x64),JDK安装路径里有个"src.zip"就是JDK的源码文件压缩包: 设置好环境变量的JAVA_HOME变量和PATH变量(JAVA_HOME变量值也是D:\Java\jdk-8u92-windows-x64). 然后打开Eclipse设置可以Debug模式调试

设置Eclipse可以Debug模式调试JDK源码,并显示局部变量的值

最近突然萌发了研究JDK源码的想法,所以就想到了在自己常用的Eclipse上可以调试JDK源码. 整个设置过程也很简单: 首先你要安装好JDK(我的JDK安装路径根目录是D:\Java\jdk-8u92-windows-x64),JDK安装路径里有个"src.zip"就是JDK的源码文件压缩包: 设置好环境变量的JAVA_HOME变量和PATH变量(JAVA_HOME变量值也是D:\Java\jdk-8u92-windows-x64). 然后打开Eclipse设置可以Debug模式调试

Eclipse开发环境debug模式调试断点从jar跳到源码

Eclipse开发环境debug模式调试断点从jar跳到源码 说明:本案例使用jsch-0.1.54.jar和源码做test,项目分成两个,一个是jsch的源码,另一个是测试案例 一.下载JSch.的jar包和源码  http://www.jcraft.com/jsch/ 二.新建两个工程分别是JSch.TestDemo,JSch中引入jsch-0.1.54.jar的源码,项目结构如下图 SftpConnect.java package com.kevin.test; import com.jc

qt creator如何以debug模式调试工程(或如何使断点起作用)[转]

qt creator在debug模式下调试工程时加断点.单步执行等才是好使的. 只需点击左侧栏目debug,即可进入debug模式. 在右下侧,可以控制调试的类型,如单步.进入函数等等.还可以终止调试! 有几条经验,可以学习一下: 1. 按住左侧ctrl键,点击某一函数,就好跳到该函数的定义处. 2. F9加断点,再按F9,取消断点. 3. F10单步执行. ........ 许多快捷键可以方便调试,查看 qt creator如何以debug模式调试工程(或如何使断点起作用)[转],布布扣,bu

2.12 正点原子ESP8266模块的STA模式 调试

因为手头没有安卓手机,无法调试模块的AP模式,于是我使用了笔记本电脑--路由器--无线模块的STA模式调试. 其中只测试了三种情况:TCP服务器.TCP客户端.UDP(我认为是UDP客户端). 1.需要修改MDK5的源代码SSID和password (1)模块做TCP服务器 1.模块的IP地址已经在代码固定. 2.电脑需要做client,网络调试助手修改IP地址和端口与模块相对应. (2)模块做TCP客户端 1.电脑的IP地址已经固定.通过网络连接可查. 2.模块输入电脑的IP地址,并且连接.

通过USB 2.0电缆手动设置内核模式调试

Windows的调试工具支持通过USB 2.0电缆进行内核调试.本文介绍如何手动设置USB 2.0调试.通过USB 2.0电缆进行调试需要以下硬件: USB 2.0调试电缆.此电缆不是标准USB 2.0电缆,因为它有一个额外的硬件组件,使其与USB2调试设备功能规范兼容.您可以在Internet上搜索“USB 2.0调试电缆”一词来找到这些电缆. 在主机上,有一个ehci(usb 2.0)主机控制器 在目标计算机上,支持调试的ehci(usb 2.0)主机控制器. 设置目标计算机 1.在目标计算

柯南君:教你如何对待大型网站平台的性能优化? 之 二--- 应用程序调优 (长篇总结)

柯南君:教你如何对待大型网站平台的性能优化? 之 "二"--- 应用程序调优(长篇总结) 柯南君 上一章 <柯南君:教你如何对待大型电商平台的性能优化?之 一 (方法.指标.工具.定位)>讲到了一些测试方法.测试指标.以及测试工具.稍微讲了一些如何定位的方法?这一章主要讲一下"如何优化应用程序,将其性能提升". 一.基本知识  1.下面讲一些JAVA 程序性能方面的一些看法,首先给大家讲一下应用程序调优,需要调优哪些项? ① 运算的性能 : 看哪一个算法