Android_使用StrictMode 调试开发

Android_使用StrictMode 调试开发

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

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();
	}
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117692.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js用户注册表单验证_onclick调用js函数

    js用户注册表单验证_onclick调用js函数源代码<!DOCTYPEhtml><html><body><h1>js通过button的简单验证</h1><pid=&quo

    2022年8月3日
    5
  • 源码大全_怎么复制网页源代码

    源码大全_怎么复制网页源代码7000个源码批量下载7000个源码批量下载<type=”text/javascript”language=”JavaScript”>document.title=”7000个源码批量下载-“+document.titlehttp://asp.lt263.com/soft/SaGuestBook.rar安全天使字符界面留言本(SaGuestBook)htt…

    2022年10月8日
    2
  • cns服务搭建+手机ml,百度直连「建议收藏」

    cns服务搭建+手机ml,百度直连「建议收藏」1买个服务器,阿里云或腾讯云2执行代码GitHub:githubLinux一键:安装:`typecurl&>/dev/null&&echo’curl-O’||echo’wget-Ocns.sh’`http://pros.cutebi.taobao69.cn:666/cns/cns.sh&&shcns.sh卸载:`typecurl&>/dev/null&&echo’curl-

    2025年7月5日
    3
  • ubuntu 20.04.1 LTS_visi20安装教程

    ubuntu 20.04.1 LTS_visi20安装教程UbuntuServer20.04LTS下载及安装教程

    2025年10月9日
    5
  • 学习java的好书及视频推荐

    学习java的好书及视频推荐转载来自:点击打开链接要想在java领域成为大牛,除了不断进行项目实战以外,还要不断的进行进修和学习,以下将本人学习java多年使用的好书和一些好的视频推荐给大家,这些书和视频都是本人在网络找了很久,后来又经过实践证明的好书和视频。希望对大家学习java有帮助首先,是书的推荐:1学习java,java基础,1.0 入门:HeadFirstJava(

    2022年6月21日
    27
  • 《QTreeView+QAbstractItemModel自定义模型》:系列教程之三[通俗易懂]

    《QTreeView+QAbstractItemModel自定义模型》:系列教程之三[通俗易懂]1、了解常用的model类通过对上一节的阅读,我们知道只要具备model+view就可以显示数据。那么有哪些model类呢,从下图中我们可以看到Qt中模型类的层次结构QStandardItemModel:可以作为QListView、QTableView、QTreeView的标准model。QAbstractListModel:需要使用QListView显示数据,并配合自定义…

    2022年6月14日
    66

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号