运行亚行logcat在shell我看到这样的事情严格模式违反列表
StrictMode policy violation; ~duration=337 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=23 violation=2
- 什么政策= 23分的手段?
- 什么是违规= 2?
我正在寻找此值的含义,但我找不到任何文档 丝毫侵犯和政策清单,也许我在一个糟糕的方式解释从我的搜索结果,但我会欣赏一些解释关于这个
运行亚行logcat在shell我看到这样的事情严格模式违反列表
StrictMode policy violation; ~duration=337 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=23 violation=2
我正在寻找此值的含义,但我找不到任何文档 丝毫侵犯和政策清单,也许我在一个糟糕的方式解释从我的搜索结果,但我会欣赏一些解释关于这个
什么政策= 23是什么意思?
您可以配置StrictMode通知您的某些事情,你可以告诉它你想如何得到通知(简单的日志信息,异常,...)。请参阅启用StrictMode部分this blog post以供参考。
策略是一种内部跟踪该配置的位掩码。由于它是一个掩码,因此可以更直观地用二进制来解释它,即10111.然后,您可以查找BlockGuard.java
源文件中的相关位。下面是this site(不知道Android版本也就是,有可能在新版本中更多的东西,我没有电流源在我的机器上现在)很短的副本:
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和NETWORK违规。
什么是违规= 2?
这只是作为一些内部int常量的vialolation的类型。由于例外的名字已经给出了这个名称,所以它并没有多大帮助。作者刚刚定义了一个用于跨所有不同的子类StrictMode异常的方法getMessage()
。仅供参考,这些常数在StrictMode.java内定义。
对于今天的Android,策略列表位于'StrictMode.java' [源代码](https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android /os/StrictMode.java)。目前,它们未在文档中显示。请注意,大多数常量名现在反映相应的方法名称。 –