在shell中运行adb logcat我看到了这样的情况
StrictMode policy violation; ~duration=337 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=23 violation=2
我在寻找这个值的含义,但是我找不到任何违反和策略列表的文档,或者我可能用不好的方式解释了搜索的结果,但是我会感激对此的一些解释。
发布于 2012-06-08 19:34:48
policy=23是什么意思?
您可以将StrictMode配置为将某些事情通知您,并且可以告诉它您希望如何得到通知(简单日志消息、异常、.)。有关参考,请参阅这篇博客文章中的“启用这篇博客文章”部分。
策略是一个位掩码,它在内部跟踪该配置。因为它是一个掩码,所以用二进制语言解释它更直观,也就是10111。然后,您可以在BlockGuard.java源文件中查找相关位。这里有一个来自本站的短拷贝(不确定是什么安卓版本,更新的版本中可能会有更多的东西;我现在的机器上没有当前的源代码)
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中定义的。
https://stackoverflow.com/questions/10953701
复制相似问题