StrictMode(严格模式)
来源:互联网 发布:wind万德数据库官网 编辑:程序博客网 时间:2024/06/05 18:54
**前言:**Android2.3之后引入的一个新的调试特性,这个特性可大幅度提高 “应用性能” 。在debug模式开始时,可以开启,可以有效避免性能或其他问题。
策略有两种:(一般只能在调试环境中使用)
1. 与线程相关:只要在该线程中任意一个地方启动一次即可,就可以检测该线程是否存在违规行为,一般在需要检测的线程上调用该策略代码
2. 与内存相关:检测应用是否存在内存泄露问题,如:SQLite在关闭前就被丢弃,造成内存泄露,这时可以被检测出(区别:不支持通过对话框显示警告信息)
关闭StrictMode:(生产环境则需要把严格模式关闭了,避免由于警告造成应用强制关闭,体验不好)
方式一:定义一个全局的布尔变量,在生产时变为false,不让策略代码执行
方式二:使用标签的android:debuggable=”true”属性,在调试时手动设置为true,生产时手动设置为false,具体代码判断如下:
ApplicationInfo appInfo = instance.getApplicationInfo();int appFlags = appInfo.flags;if((appFlags & ApplicationInfo.FLAG_DEBUGGABLE) != 0){ //执行策略代码}
总结:都是控制策略代码不执行
封装策略代码:(要使用策略,推荐这种方式)
(说明:把策略的代码封装在一个类中,通过try/catch避免2.3之前版本不存在该类异常,如下调用使用与所有Android版本)
/** * 说明:严格模式的代码策略 * 作者:黄伟财 * 日期:2016-2-2 */public class StrictModeWrapper { public static void init(Context context){ ApplicationInfo appInfo = context.getApplicationInfo(); int appFlags = appInfo.flags; if((appFlags & ApplicationInfo.FLAG_DEBUGGABLE) != 0){ //检测线程的策略(根据情况可定义多种检测方向) StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() .penaltyLog() .build()); //检测内存的策略(根据情况可定义多种检测方向) StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .penaltyLog() .penaltyDeath() .build()); } }}
启动严格模式的策略:
try { StrictModeWrapper.init(this);} catch (Exception e) { e.printStackTrace();}
另外:在2.3之前版本需要使用严格模式策略,那么可用如下反射方法,但不够灵活,只能调用系统存在的
try { Class sMode = Class.forName("android.os.StrictMode"); Method enableDefaults = sMode.getMethod("enableDefaults"); enableDefaults.invoke(null);} catch (Exception e) { e.printStackTrace();}
以上就是全部内容,大家可以自个去试试,有什么问题可以留言。或者在微信公众号“技术帮团队”上找我们。
0 0
- StrictMode(严格模式)
- StrictMode 严格模式应用
- Android StrictMode严格模式
- Android StrictMode严格模式的使用方法
- 严苛模式(StrictMode)
- 严苛模式(StrictMode)
- 严苛模式(StrictMode)
- 严苛模式(StrictMode) .
- 严苛模式(StrictMode)
- 严苛模式(StrictMode)
- 严苛模式(StrictMode)
- 严苛模式(StrictMode)
- 严苛模式(StrictMode)
- 严苛模式(StrictMode)
- 严苛模式(StrictMode)
- 严苛模式(StrictMode)
- 严苛模式(StrictMode)
- 严苛模式(StrictMode)
- 项目管理心得:一个项目经理的个人体会、经验总结
- python正则表达式
- hrbust 1325 Leyni的车牌号【贪心】
- android service中弹出dialog对话框
- HOOK windows 拖放动作
- StrictMode(严格模式)
- 基于.NET实现数据挖掘--决策树分类算法
- 推荐一个GIMP下的一个批处理插件BIMP. Batch Image Manipulation Plugin.
- Python爬虫学习总结
- Xcode清理缓存和垃圾文件
- IOSApp Transport Security has blocked a cleartext HTTP (http://) resource load的解决办法
- adb pull和push命令记录
- Gym100694A(贪心+背包)
- 第10天新手SEO基础计划之:优质外链