我开始玩简单的概念,比如绑定ListViews并将JSON数据提取到填充ListView的适配器。该示例附带以下代码:
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.detectAll()
.penaltyLog()
.build();
StrictMode.setThreadPolicy(policy);
起初我并不太关心
// Testing only. Do NOT USE IN PRODUCTION!
评论,直到我删除了政策代码,这导致我的应用每次返回HttpResponse时都会开始抛出ANR。
看起来我收到了'android.os.NetworkOnMainThreadException'异常。现在,我可以理解为什么你不希望在你的UI线程上运行任何网络代码,但是为什么StrictMode甚至允许你首先执行此操作,如果它保证会抛出运行时异常?
在同一个说明中,有人可以解释上面的StrictMode片段吗?我已经阅读了关于它的Android开发文档,但我仍然对它如何允许代码运行感到困惑。
我唯一的理论是下面的伪解释:
对于当前线程,检测所有非法操作。记录问题,但忽略它。设置当前线程的策略以使用此规则。
我关闭了吗?