Android Honeycomb: NetworkOnMainThreadException даже при использовании AsyncTask и без строгого режима?

Я сталкиваюсь с NetworkOnMainThreadException с моим приложением Android 3.0. В поисках решения я нашел это, но если я правильно понял, по умолчанию будет выбран строгий режим.

Кроме того, весь мой доступ к сети находится в AsyncTaskтак что я не вижу смысла в этом исключении в любом случае.

Итак, я совершенно отчаялся, что я должен сделать, чтобы предотвратить это...

С уважением, медуза

Редактировать:

Эта запись в блоге говорит, что AsyncTask должно быть достаточно, но, по крайней мере, проясняет точку StrictMode.

Решение:

Я выключил StrictMode (возможно, лучше сохранить некоторые настройки, но меня это не беспокоило...):

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

После этого я наткнулся на "java.lang.RuntimeException: этот поток запрещает HTTP-запросы", но нашел решение для этого здесь. Я немного смущен, хотя, как AndroidHttpClient работал нормально, когда я использовал его в моем приложении Android 2.0+...

Решение, часть2

As it turned out, using AsyncTask was a nice idea but pretty useless if done wrong... So there was nothing wrong with the strict mode's reaction. Should have listened, er?;)

Still good to know it's activated on Honeycomb by default.

2 ответа

Решение

StrictMode включен по умолчанию в Honeycomb.

Смотрите, скажем, ссылку конкретно penaltyDeathOnNetwork(), Я столкнулся с подобной проблемой.

В 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);
    }
Другие вопросы по тегам