В настоящее время я использую этот код для выполнения задачи:

AsyncTask<Object, Integer, Void> task = new Task(getApplicationContext(), this.findViewById(android.R.id.content));

task.execute();

Теперь я бы хотел повторить эту задачу навсегда в цикле while, когда задача будет завершена, я запустил бы новую задачу ..

Как я могу продолжить?

Я знаю, что для получения статуса задачи я могу использовать: task.getStatus(); Но после ?

-1
Franck 27 Фев 2015 в 16:15

2 ответа

Лучший ответ

Я не знаю подробностей ваших кодов, но вот рекурсивное решение,

AsyncTask имеет метод onPostExecute. Просто вызовите еще одну задачу в этом методе. Однако, если задача завершена (вы управляете ею с помощью любого флага), начните новое действие

protected void onPostExecuteTask(Object result) {
    if(!flag){
        //Run the Task again
        }else{
        //Start the new activity
        }
}
1
Faruk Yazici 27 Фев 2015 в 13:26

Из http://developer.android.com/reference/android/os/AsyncTask. html

Задача может быть выполнена только один раз (при второй попытке выполнения будет сгенерировано исключение).

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

Вы, конечно, можете создать другую задачу на своем onPostExecute, но это плохая практика, поскольку AsyncTasks предназначены для выполнения коротких задач:

AsyncTasks в идеале следует использовать для коротких операций (максимум несколько секунд). Если вам нужно, чтобы потоки работали в течение длительного периода времени, настоятельно рекомендуется использовать различные API, предоставляемые пакетом java.util.concurrent, такие как Executor, ThreadPoolExecutor и FutureTask.

2
antonio 27 Фев 2015 в 13:23