首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >严格模式冲突列表

严格模式冲突列表
EN

Stack Overflow用户
提问于 2012-06-08 17:52:36
回答 1查看 8.1K关注 0票数 5

在shell中运行adb logcat我看到了这样的情况

StrictMode policy violation; ~duration=337 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=23 violation=2

  1. policy=23是什么意思?
  2. violation=2是什么?

我在寻找这个值的含义,但是我找不到任何违反和策略列表的文档,或者我可能用不好的方式解释了搜索的结果,但是我会感激对此的一些解释。

EN

回答 1

Stack Overflow用户

发布于 2012-06-08 19:34:48

policy=23是什么意思?

您可以将StrictMode配置为将某些事情通知您,并且可以告诉它您希望如何得到通知(简单日志消息、异常、.)。有关参考,请参阅这篇博客文章中的“启用这篇博客文章”部分。

策略是一个位掩码,它在内部跟踪该配置。因为它是一个掩码,所以用二进制语言解释它更直观,也就是10111。然后,您可以在BlockGuard.java源文件中查找相关位。这里有一个来自本站的短拷贝(不确定是什么安卓版本,更新的版本中可能会有更多的东西;我现在的机器上没有当前的源代码)

代码语言:javascript
复制
public static final int DISALLOW_DISK_WRITE = 0x01;
public static final int DISALLOW_DISK_READ = 0x02;
public static final int DISALLOW_NETWORK = 0x04;
public static final int PASS_RESTRICTIONS_VIA_RPC = 0x08;
public static final int PENALTY_LOG = 0x10;
public static final int PENALTY_DIALOG = 0x20;
public static final int PENALTY_DEATH = 0x40;

这样,您就可以知道您的StrictMode配置为通过日志消息通知您DISK_READ、DISK_WRITE和网络违规。

violation=2是什么?

这只是作为内部int常量的vialolation的类型。这对你没有多大帮助,因为这个异常的名字已经泄露了。作者刚刚定义了一个getMessage()方法,用于跨越所有不同的子类StrictMode异常。仅供参考,这些常量是在StrictMode.java中定义的。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10953701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档