android 程序优化之查错篇

1.StrictMode 
StrictMode 是android API 9 引入的一个类, 能够帮助开发者 发现代码中的一些问题。 它可以设置一些策略,当程序违反这些策略的时候,它会提示开发者。

主要有两大类策略,一个是线程方面的策略,一个是VM方面的策略。
线程策略方面,它能够发现UI线程读写DISK,UI线程访问网络,自己写的速度慢的代码
VM策略方面,它能够发现  Activity内存泄露, SQL 对象内存泄露, 资源未释放,能够限定某个类的最大对象数
当程序违反这些策略的时候,它会通过一定方式通知开发者,如log等。
具体代码如下。

public static void enableStrictMode() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
            StrictMode.ThreadPolicy.Builder threadPolicyBuilder = //线程策略
                    new StrictMode.ThreadPolicy.Builder()
                            .detectAll()   //发现所有策略的违反行为
                            .penaltyLog(); //发现违反策略,打印log。还有其他的方式,参考API
            StrictMode.VmPolicy.Builder vmPolicyBuilder =   //VM策略
                    new StrictMode.VmPolicy.Builder()
                            .detectAll()
                            .penaltyLog();

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                threadPolicyBuilder.penaltyFlashScreen(); //发现违反策略的行为,是屏幕闪烁
                vmPolicyBuilder
                        .setClassInstanceLimit(MyClass.class, 1); //这里限制 MyClass 的实例最多只有一个,否则违反策略。
            }
            StrictMode.setThreadPolicy(threadPolicyBuilder.build());  
            StrictMode.setVmPolicy(vmPolicyBuilder.build());
        }
}
可以把它放到Application . onCreate() 里,这样,程序打开的时候,它就起作用了。
一定不要在release版中使用它,很耗性能的。
if(debug){
	enableStrictMode() ;
}




2,内存分析,检查内存泄露

1,hprof , 它能够将某一时刻的heap保存下来,以视图的方式来查看heap中的对象数目,对象占用空间,从根到对象的引用链。它还能将多个时刻 heap快照进行对比。

2,trace allocation , 它能够跟踪内存分配情况,将导致内存分配的堆栈信息展示出来。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值