本文主要介绍安卓严格模式的用法,有需要的朋友可以参考一下。
Android 2.3提供了一个名为StrictMode的调试功能,谷歌声称该功能已经使数百个Android上的谷歌应用程序受益。那它是做什么的?它将报告与线程和虚拟机相关的策略违规。一旦检测到违反策略的情况,您将得到一个警告,其中包含一个堆栈跟踪来显示您的应用程序在哪里违反了策略。您可以强制使用警告而不是崩溃,或者只在日志中包含警告来保持您的应用程序运行。StrictMode是一个非常有用的类,可以很容易地应用于检查Android应用程序的性能和存在的问题。当此模式打开时,开发人员可以检查应用程序中的潜在问题。
StrictMode分为以下两种策略:
1. 线程监控策略
StrictMode.setThreadPolicy(新StrictMode。ThreadPolicy.Builder()。detectDiskReads()。detectDiskWrites()。检测网络()。检测所有()。penaltyLog()
//penaltyDeath()。build());
(1)setThreadPolicy():该策略将应用于当前线程。
(2)detectDiskReads():监控磁盘读取。
(3)detectDiskWrites():监控磁盘写入。
(4)detectNetwork():监控网络访问。
(5) detect():检测当前线程的所有函数。
(6)penaltyLog():表示将警告输出到LogCat。您还可以使用其他或添加新的惩罚函数,如penaltyDeath()。一旦StrictMode消息被写入LogCat,应用程序就会崩溃。
不需要频繁开启严格模式,可以在Activity的OnCreate()函数中开启,也可以在应用派生类的onCreate()函数中设置严格模式。任何在线程中运行的代码都可以设置StrictMode,但是你真的只需要设置一次,一次就够了。
2.VM虚拟机监控策略
StrictMode.setVmPolicy(新StrictMode。VmPolicy.Builder()。detectLeakedSqlLiteObjects()。检测所有()。penaltyLog()
//.penaltyDeath()。build());
VM关注以下类别:
(1)内存泄漏的活动对象
(2)内存泄漏的SQLite对象
(3)任何其他具有内存泄漏的类似可关闭对象。
泄露的Activity对象和泄露的SQLite对象很好理解,所谓的“任何其他可关闭对象”检查主要是监控那些应该释放的对象,比如应该调用close()方法的对象。
3.应该说StrictMode生成的规则警告大部分都是应该遵守的,但是有时候并不是所有生成的信息都说明你的程序有错误。比如应用程序主线程中的快速磁盘读写不会对应用程序的性能产生太大影响,或者调试程序阶段的一些调试代码违反了设定的规则,这些规则可以忽略。
有两种方法可以忽略规则。一种是简单地在代码中注释掉Strictmode代码。另一个更好的方法是,在需要忽略的时候,添加相应的代码来阻止系统使用这些规则进行检查,然后在开发人员认为有必要检查的时候,重新应用这些规则。例如:
严格模式。thread policy old=strict mode . getthreadpolicy();
StrictMode.setThreadPolicy(新StrictMode。ThreadPolicy.Builder(旧)。permitDiskWrites()。build());
//TODO:向磁盘写入一些内容
StrictMode.setThreadPolicy(旧);
在这里,旧的是用来保存当前的策略规则,然后把一些东西写到磁盘上;这里,对磁盘执行了一些快速读写操作,最后,这些规则被重新启用。
总结
以上是如何使用边肖介绍的Android的严格模式。希望对你有帮助。如果您有任何问题,请给我留言,边肖将及时回复您。非常感谢您对我们网站的支持!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。