android 程序优化之查错篇
来源:互联网 发布:nhj提取软件 编辑:程序博客网 时间:2024/05/17 00:50
android 程序优化之查错篇
分类: android2013-09-11 10:31294人阅读评论(0)收藏举报
1.StrictMode
StrictMode 是android API 9 引入的一个类, 能够帮助开发者 发现代码中的一些问题。它可以设置一些策略,当程序违反这些策略的时候,它会提示开发者。
主要有两大类策略,一个是线程方面的策略,一个是VM方面的策略。
线程策略方面,它能够发现UI线程读写DISK,UI线程访问网络,自己写的速度慢的代码。
VM策略方面,它能够发现 Activity内存泄露, SQL 对象内存泄露, 资源未释放,能够限定某个类的最大对象数。
当程序违反这些策略的时候,它会通过一定方式通知开发者,如log等。
具体代码如下。
- public staticvoid 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){
- <pre class="java" name="code"><span style="white-space: pre;"> </span>enableStrictMode() ;</pre>}
- <pre></pre>
- <br>
- <br>
2,内存分析,检查内存泄露
1,hprof , 它能够将某一时刻的heap保存下来,以视图的方式来查看heap中的对象数目,对象占用空间,从根到对象的引用链。它还能将多个时刻 heap快照进行对比。
http://www.cnblogs.com/wisekingokok/archive/2011/11/30/2245790.html
2,trace allocation , 它能够跟踪内存分配情况,将导致内存分配的堆栈信息展示出来。
http://blog.csdn.net/harry_helei/article/details/6665219
0 0
- android 程序优化之查错篇
- Android项目优化查错神器之android lint
- Android-Lint:查错与代码优化利器
- Android-Lint:查错与代码优化利器
- Android-Lint:查错与代码优化利器
- Android-Lint:查错与代码优化利器
- Android-Lint:查错与代码优化利器
- 我的Java程序查错之路
- 【Android性能优化】Android-Lint:查错与代码优化利器
- 【Android性能优化】Android-Lint:查错与代码优化利器
- 【lint】Android-Lint:查错与代码优化利器
- java面试题--程序查错
- android之java程序性能优化
- android之java程序性能优化
- 查错
- 查错
- 查错。
- ASP中查错之实例
- Instagram使用的那些开源伙伴们
- Java中影响方法调用性能的因素
- Cython基础--Cython入门
- LeetCode: Permutations II [046]
- 第03章-VTK系统概述(1)
- android 程序优化之查错篇
- CCThread(On iOS, should create autorelease pool when create a new thread)
- PHP json_encode中文乱码解决方法--json乱码处理
- 4我回来了+安卓程序报错,无法启动的解决办法
- Codeforces #247 (Div. 2) B. Shower Line
- JDBC事务处理
- oracle数据连接情况及显示客户端IP
- CCSAXParser(可以用来读xml等)
- linux gz 解压缩