安卓蜂窝 : NetworkOnMainThreadException even when using AsyncTask and no strict mode?

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

我遇到了 NetworkOnMainThreadException使用我的 Android 3.0 应用程序。 寻找我找到的解决方案this ,但如果我理解正确的话,默认设置是关闭严格模式。

另外,我所有的网络访问都在一个 AsyncTask 中,所以无论如何我都看不到这个异常的意义。

所以,我现在很绝望我应该做些什么来防止这种情况......

亲切的问候, 水母

编辑:

This blog entry说 AsyncTask 应该够了,但至少澄清了 StrictMode 点。

解决方案:

我关闭了 StrictMode(保留一些设置可能更好,但我不会被打扰...):

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

之后,我确实遇到了“java.lang.RuntimeException: This thread forbids HTTP requests”,但找到了解决方案 here .不过,我有点困惑,因为当我在我的 Android 2.0+ 应用程序中使用 AndroidHttpClient 时,它运行良好......

解决方案,第 2 部分

事实证明,使用 AsyncTask 是一个不错的主意,但如果 done wrong 则毫无用处。 ... 所以严格模式的 react 并没有错。应该听的,嗯? ;)

很高兴知道它默认在 Honeycomb 上激活。

最佳答案

在 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);
    }

关于安卓蜂窝 : NetworkOnMainThreadException even when using AsyncTask and no strict mode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6277584/

相关文章:

android - 自定义半透明Android ActionBar

android - 仅在 Android 3.0 上异常(exception)

java - 重构包含无参数方法的 switch 语句

java - 如果我从另一个类获得 AsyncTask 类的结果,则不会显示 ProgressDialog

android - Android中没有静态方法setOnApplyWindowInsetsListener异常

android - 无法访问从广播接收器启动的异步任务中的共享首选项

android - JSONException - 没有成功的值(value) - JsonParser - Android

Android Honeycomb 通知弹出过于频繁

java - 以编程方式启用/禁用沉浸模式

java - canvas.drawBitmap() 不缩放图像