Подтвердить что ты не робот

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

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

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

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

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

Edit:

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

Решение:

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

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

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

Решение, part2

Как выяснилось, использование AsyncTask было хорошей идеей, но довольно бесполезно, если сделано неправильно... Так что в реакции строгого режима не было ничего плохого. Должен был выслушать, э?;)

По-прежнему полезно знать, что он активирован на Honeycomb по умолчанию.

4b9b3361

Ответ 1

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

Смотрите ссылка специально penaltyDeathOnNetwork(). Я столкнулся с аналогичной проблемой.

Ответ 2

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