我使用Android 3.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:此线程禁止HTTP请求”,但找到了此here的解决方案。我有点困惑,因为AndroidHttpClient
在我的Android 2.0+应用程序中使用它时运行良好......
解决方案,第2部分
事实证明,使用AsyncTask是一个不错的主意,但如果done wrong,则无用...... 所以严格模式的反应没有错。应该听,呃? ;)
很高兴知道它默认在Honeycomb上激活。
答案 0 :(得分:14)
在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);
}
答案 1 :(得分:5)
默认情况下,在Honeycomb中打开StrictMode。
请特别说link penaltyDeathOnNetwork()
。我遇到了类似的问题。