У меня есть AsyncTask, которая в настоящее время работает только один раз и занимает около 5-30 секунд для завершения.Периодически запускать AsyncTask после завершения предыдущей задачи
То, что я хочу сделать, это:
1. Запустите приложение
2. Запустите Task
3. Дождитесь ее завершения.
4. Дождитесь фиксированного количества времени, например. 5 секунд
5. Повторите Шаг 2.
Я огляделась несколько постов, которые предполагают, используя Handlers
и это, как я пытался сделать это:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Activity activity = this;
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
// Start AsyncTask
new MyTask(activity).execute();
}
}, 5000); //Every 5 seconds
}
MyTask
является подклассом AsyncTask в какой-нибудь другой .java файл.
Выполнение этой задачи выполняется только при запуске после задержки 5 секунд. Он не перерабатывает себя так, как должен.
Обратите внимание, что я хочу запустить следующую задачу только в том случае, если она еще не запущена и запустить ее через 5 секунд после нее.
Итак, почему он не работает как исключенный?
привет CPX, да, решение это использовать работоспособной и обработчик, но не делают, вместо этого используйте ScheduledThreadPoolExecutor, он безопасен и был разработан с учетом хорошей производительности для Android. https://developer.android.com/reference/java/util/concurrent/ScheduledThreadPoolExecutor.html –