В настоящее время я использую этот код для выполнения задачи:
AsyncTask<Object, Integer, Void> task = new Task(getApplicationContext(), this.findViewById(android.R.id.content));
task.execute();
Теперь я бы хотел повторить эту задачу навсегда в цикле while, когда задача будет завершена, я запустил бы новую задачу ..
Как я могу продолжить?
Я знаю, что для получения статуса задачи я могу использовать: task.getStatus();
Но после ?
2 ответа
Я не знаю подробностей ваших кодов, но вот рекурсивное решение,
AsyncTask имеет метод onPostExecute
. Просто вызовите еще одну задачу в этом методе. Однако, если задача завершена (вы управляете ею с помощью любого флага), начните новое действие
protected void onPostExecuteTask(Object result) {
if(!flag){
//Run the Task again
}else{
//Start the new activity
}
}
Из http://developer.android.com/reference/android/os/AsyncTask. html
Задача может быть выполнена только один раз (при второй попытке выполнения будет сгенерировано исключение).
Таким образом, вы можете использовать свой экземпляр AsyncTask только один раз.
Вы, конечно, можете создать другую задачу на своем onPostExecute, но это плохая практика, поскольку AsyncTasks предназначены для выполнения коротких задач:
AsyncTasks в идеале следует использовать для коротких операций (максимум несколько секунд). Если вам нужно, чтобы потоки работали в течение длительного периода времени, настоятельно рекомендуется использовать различные API, предоставляемые пакетом java.util.concurrent, такие как Executor, ThreadPoolExecutor и FutureTask.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.