android2.新的APIxa0StrictMode介绍
2023-05-22
在android中,google.StrictMode增加到3中 API设置了一个thread策略(ui进程或分流程),它主要测试了读写操作、访问网络、数据库读写等耗时操作,并将其直接打印为log或dialog。通过对这些日志的分析,可以尽早找出程序运行缓慢的原因,从而优化代码,防止ANR(Application Not Responding)窗子的出现。
使用StrictMode
建议使用StrictMode的方法是,在开发阶段,打开它,在发布应用之前关闭它。
例如:在你的应用中,onCreate():
代码Java
1. public void onCreate() {
2.
3. if (DEVELOPER_MODE) {
4. StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() StrictMode///结构
5.
6. .detectDiskReads() ///当硬盘阅读操作发生时导出
7.
8. .detectDiskWrites()//当硬盘写作操作时导出。
9.
10. .detectNetwork() //在访问网络时导出,可替换为detectAll() 它涵盖磁盘读写和网络I/O
11.
12. .penaltyLog() ///以日志的形式导出
13.
14. .build());
15.
16. StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
17.
18. .detectLeakedSqlLiteObjects() //检测SQLite数据库操作
19.
20. .penaltyLog() ///以日志的形式导出
21.
22. .penaltyDeath()
23.
24. .build());
25.
26. }
27.
28. super.onCreate();
29.
30.
当触发策略中的操作时,系统会打印出一个StrictMode日志,格式如下:
代码Java
1. 02-27 10:03:56.122: DEBUG/StrictMode(16210): StrictMode policy violation; ~duration=696 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=23 violation=2
2. 02 02-27 10:03:56.122: DEBUG/StrictMode(16210): at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:745)
另外还有两点:
1.android2.3版本直接访问ui过程中的网络会报错。
2.ANR窗口会弹出程序堵塞或超过5秒的计算时间。
本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。
免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com