Android_使用StrictMode调试开发

本博文为子墨原创,转载请注明出处!

http://blog.csdn.net/zimo2013/article/details/40076049

1.StrictMode简介

自Android 2.3提供一个称为严苛模式(StrictMode)的调试特性,Google称该特性已经使数百个Android上的Google应用程序受益。那它都做什么呢?它将报告与线程及虚拟机相关的策略违例。一旦检测到策略违例(policy violation),你将获得警告,其包含了一个栈trace显示你的应用在何处发生违例。你可以强制用警告代替崩溃(crash),也可以仅将警告计入日志,让你的应用继续执行。

2.ThreadPolicy类型

和线程相关,它主要针对主线程(或UI线程)。由于在主线程中读写磁盘和进行网络访问都不是好的做法,Google已经在磁盘和网络代码中添加了严苛模式(StrictMode)钩子(hook)。如果你对某个线程打开严苛模式(StrictMode),当那个线程进行磁盘和网络访问,你将获得警告。你可以选择警告方式。一些违例包含用户慢速调用(custom slow calls 这么翻译行吗?),磁盘读写,网络访问。你能选择将警告写入LogCat,显示一个对话框,闪下屏幕,写入DropBox日志文件,或让应用崩溃。最通常的做法是写入LogCat或让应用崩溃。

check "read/write disk", "access network" and "show call" in thread

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
	.detectDiskReads()
	.detectDiskWrites()
	.detectNetwork()
	.penaltyLog()
	.build());

3.VmPolicy类型

还有一种虚拟机策略(VmPolicy),能检查内存泄漏,譬如,当关闭一个SQLite对象前的完结操作,或其他任何类似可关闭对象在关闭前的完结操作。虚拟机策略(VmPolicy)由一个类似的Builder类创建.和线程策略(ThreadPolicy)不同的是,虚拟机策略(VmPolicy)不能通过一个对话框提供警告。

check leaks for "cursor", "close method", "activity instance", "object instance" and "registration" in process

StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
   .detectLeakedSqlLiteObjects()
   .penaltyLog()
   .penaltyDeath()
   .build());  

4.使用实例

public class UILApplication extends Application {
	@TargetApi(Build.VERSION_CODES.GINGERBREAD)
	@SuppressWarnings("unused")
	@Override
	public void onCreate() {
		if (DEVELOPER_MODE && Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
			StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyDialog().build());
			StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyDeath().build());
		}

		super.onCreate();
	}
}
时间: 2024-10-21 10:15:45

Android_使用StrictMode调试开发的相关文章

基于Modbus的C#串口调试开发

说明:本文主要研究的是使用C# WinForm开发的串口调试软件(其中包含Modbus协议相关操作).Modbus相关协议可以查阅百度文库等,可参考: <http://wenku.baidu.com/link?url=J-QZeQVLfvfZh7_lh8Qf0MdwANZuVjEoTqox6zJYrSnKyfgES2RTb_bjC5ZTn8-xgsuUAyiELRYVA3-3FBkBGywWhQ9YGoavJOzwB0IxTyK >. (1)先测试串口设置,发送和接收数据. (2)发送modb

Firefox OS调试开发系列视频教程

1.教程视频一:B2G 桌面介绍 (Firefox OS) 在这部视频里,作者向我们展示了如何在MAC OS.Windows和Linux环境下下载和安装桌面版B2G模拟环境,作者发掘出了隐藏在设置菜单中的一些有用的开发设置,并展示如何打包你现有的网络应用并安装在Firefox OS上. b2g desktop nightly下载地址: ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-central/ Firefox OS模拟器

【转】PHP调试开发工具你认识多少?

来源:PHP100中文网(http://www.php100.com/html/itnews/PHPxinwen/2009/0902/3257.html) PHP现在已经是使用最为广泛的开源服务器端脚本语言之一,当然PHP并不是速度最快的,但它却是最常用的脚本语言.PHP100出品的EclipsePHP Sutdio 也曾收到广大PHPer好评,但不可能每个人的习惯是一样的,尤其是对与探索的朋友,所以今天PHP100就在这里介绍50个有益的PHP工具,可以大大提高你的编程工作,希望大家转载此文章

Android_校易app开发日志_第三天

今天敲代码不在状态,昨晚又没睡着,,,,看小说看到了3点半,今天早上,不对,是中午12点多才起床,断断续续地干了点其他事情,并没有很投入地敲代码. 开发进展和计划 昨天晚上大致敲了一点二手物品发布页,今天做的基本完善了,但还并不完善,预计明天三四五六七节课再加上晚上可以基本完成发布页面,然后后天开始写浏览功能. 功能介绍 如下图,布局分布为标题栏.二手商品描述框.照片上传框.宿舍地址输入栏.标签输入栏.分类添加页面.界面还没怎么优化... 其中商品信息描述和分类为必填项,其中添加分类为一单独的a

微信开发-PC调试-JS-SDK功能之分享功能调试

一般涉及和第三方的开发调试,都会比较麻烦些.不过,像微信这样的大公司呢,产品技术是过硬的,所以,基本上只要自己把文档看仔细了,弄好了,基本就没有问题了. 对于后端接口一类的调试,主要就是通过打印访问日志的方式,进行一步步排查,常见的错误官方文档也有提示,仔细找找就能发现问题. 本文主要讲解js-sdk的调试方式,因此就不说后台接口的问题了. js-sdk的调试难点在于,在手机上的调试,无法监控各种传输状态,由于是js类的操作,也不方便打印日志什么的. 不过幸好,微信官方提供了一个pc版本的调试工

移动端前端开发调试

转自:http://yujiangshui.com/multidevice-frontend-debug/ 通过移动端使用 Web 服务的比率越来越大,例如淘宝今年双十一,移动端交易份额就达到 42.6%.由此可见,掌握移动端的前端开发和测试是非常有必要的. 由于之前做过大量有响应式需求的项目:今年(2014)年初也配合 Denis 的 微信机器人 做了一些用于微信的移动端项目:在淘宝 UED 实习的时候,也有参与过一个针对移动端的游戏的部分开发.所以算是积累了一点移动端调试的经验,在这里分享一

20150502 调试分析之 使用gdb远程调试ARM开发板

20150502 调试分析之 使用gdb远程调试ARM开发板 2015-05-02 Lover雪儿 今天我们要学习的是使用gdb和gdbserver来远程调试开发板程序. 下面是本人的一些具体步骤: 下载gdb-7.9.tar.gz地址: http://ftp.gnu.org/gnu/gdb/gdb-7.9.tar.gz 安装gdb tar -jxvf gdb-7.9.tar.bz2 ./configure -target=arm-none-linux-gnueabi --prefix=/hom

开发板上使用core文件调试

转载:http://www.nginx.cn/1521.html 如果开发板的操作系统也是linux,core调试方法依然适用.如果开发板上不支持gdb,可将开发板的环境(依赖库).可执行文件和core文件拷贝到PC的linux下.在 PC上调试开发板上产生的core文件,需要使用交叉编译器自带的gdb,并且需要在gdb中指定solib-absolute-prefix和 solib-search-path两个变量以保证gdb能够找到可执行程序的依赖库路径.有一种建立配置文件的方法,不需要每次启动

JavaScript使用DeviceOne开发实战(二) 生成调试安装包

生成调试安装包 首先需要说明的是,这个步骤并不是每次调试App都必须的,大部分情况生成一次调试安装包,安装到手机上之后就可以忽略整个这个步骤.因为调试安装包包含了很多原生组件,都是可以定制勾选的,如果你需要额外增加一些原生组件,则需要勾选更多的组件并要重新生成调试安装包. 点击调试程序的菜单里的"Build Debug Version"按钮,如果没有登录过,会提示登录 如果打开了多个项目,需要选择一个你想要打包的具体项目,打包的时候需要联网. 只需要几分钟,"打包中-&quo