我用我的Android3.0应用程序撞上了一台NetworkOnMainThreadException。在搜索解决方案时,我找到了this,但如果我理解正确的话,默认设置是关闭严格模式。
另外,我所有的网络访问都在AsyncTask
中,所以我看不出这个异常有什么意义。
所以,我现在非常绝望,我应该做些什么来防止这种情况发生…
亲切的问候,水母
编辑:
This blog entry说AsyncTask应该足够了,但至少澄清了StrictMode的观点。
解决方案:
我关闭了StrictMode (保留一些设置可能更好,但我不能被打扰...):
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
在那之后,我确实遇到了一个"java.lang.RuntimeException:这个线程禁止超文本传输协议请求“,但是我找到了这个here的解决方案。然而,我有点困惑,因为当我在我的安卓2.0+应用程序中使用AndroidHttpClient
时,它工作得很好……
解决方案、part2
事实证明,使用AsyncTask是一个很好的想法,但如果使用done wrong...所以严格模式的反应没什么问题。应该听一听,嗯?;)
还是很高兴知道它是默认在Honeycomb上激活的。
发布于 2011-06-08 21:36:39
默认情况下,StrictMode在蜂巢中处于启用状态。
参见say link,具体地说是penaltyDeathOnNetwork()
。我遇到了类似的问题。
发布于 2011-11-03 03:50:47
在启用了Android Honeycomb StrictMode的情况下,关闭它,在onCreate()函数上添加代码...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
https://stackoverflow.com/questions/6277584
复制相似问题