я имел следующий код, который вызывается в классе, который был зарегистрирован для получения периодического (1 раз в секунду) передач:Android AsyncTask Logging терпит неудачу
public void onReceive(Context c, Intent i) {
Log.d("NET", "Polling server...");
try {
Request.getChanges();
} catch (Exception e) {
Log.w("NET", "Error polling server: " + e.toString());
}
}
Однако, поскольку этот код был быть выпалил, как BroadcastReceiver, и, таким образом, становится работать в потоке пользовательского интерфейса, я получаю:
Error polling server: android.os.NetworkOnMainThreadException
Так что я решил попробовать его в AsyncTask вместо:
public void onReceive(Context c, Intent i) {
class Task extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... arg0) {
Log.d("NET", "Polling server...");
try {
Request.getChanges();
} catch (Exception e) {
Log.w("NET", "Error polling server: " + e.toString());
}
return null;
}
}
new Task().execute();
}
Однако, когда я это делаю, я не получаю никакого вывода. Подумайте, в чем проблема? Благодаря!
Почему вы не обернуть его просто ниткой (...)? – nKn
Как я понимаю, AsyncTask в основном представляет собой оболочку вокруг нереста нового потока, что делает процесс немного проще. – joshlf
Есть ли у вас еще одна AsyncTask, кроме этого в вашем приложении? – nKn