Android Honeycomb:NetworkOnMainThreadException即使使用AsyncTask而且没有严格模式?

时间:2011-06-08 10:52:16

标签: android android-asynctask android-3.0-honeycomb android-strictmode

我使用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上激活。

2 个答案:

答案 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()。我遇到了类似的问题。