2013-07-01 5 views
-1

У меня есть активность, которая выполняет некоторые операции с сетью в onCreate().Как избежать NetworkOnMainThreadException?

Дело в том, что я должен запустить другое мероприятие после завершения сбора данных.

Как я могу убедиться, что сетевые операции на моем onCreate() завершены до того, как я запустил другое действие, чтобы избежать ошибки NetworkOnMainThreadException?

+2

Используйте задачу асинхронной, есть много вопросов, касающихся их – tyczj

+0

http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html. использовать asynctask или создать новый поток и выполнить сетевую операцию в потоке. – Raghunandan

+0

@tyczj это пункт! Я использую AsyncTasks, но когда я запускаю другое действие, они не закончены, поэтому NetworkOnMainThreadException –

ответ

2

Here is an answer, для того чтобы вы начали использовать AsyncTask. Вы делаете все свои сетевые операции в doInBackground(), тогда вы можете начать свой следующий Activity в onPostExecute(), который будет работать после завершения doInBackground().

doInBackground() возвращает свой результат onPostExecute(), поэтому, если вы запустите свой Activity, тогда ваши сетевые операции будут завершены.

AsyncTask

+0

У меня есть несколько AsyncTasks, и многие из них неизвестны ... –

+2

Я боюсь, что это не имеет смысла без какого-либо кода и контекста вашей ситуации и того, как вы их используете. Нам нужен больше ясности для лучшего ответа. Как ваш вопрос был сформулирован, это не похоже на то, что вы новичок в «AsyncTask». – codeMagic

+0

Вы можете запустить каждую задачу из предыдущей или использовать таймер и использовать 'getStatus()' для проверки прогресса каждого, но я уверен, что есть лучший способ, если вы объясните, что у вас есть, и покажите, как вы это делаете – codeMagic

Смежные вопросы