Мне нужно запустить кусок кода 10 раз с интервалом в 3 секунды. Кроме того, я хочу запустить это в AsyncTask, потому что я не хочу, чтобы он был привязан к активности. Итак, я сделал это: 1. Начал задачу async из своего основного вида деятельности. 2. Я сделал свою основную деятельность в ожидании завершения задачи async. 3. Я запустил CountDownTimer внутри AsyncTask, чтобы выполнить требуемый фрагмент кода с интервалом в 3 секунды. 4. Мне нужно обновить некоторые элементы пользовательского интерфейса в этом фрагменте кода. Итак, я запускаю эту часть в потоке пользовательского интерфейса.Запуск CountDownTimer внутри AsyncTask
Проблема: Я получаю следующее сообщение об ошибке, как только супер (начальный промежуток, интервал) был назван в моей CountDownTimer:
10-04 08:10:31.775 28124-28146/? E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #3
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:304)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:200)
at android.os.Handler.<init>(Handler.java:114)
at android.os.CountDownTimer$1.<init>(CountDownTimer.java:114)
at android.os.CountDownTimer.<init>(CountDownTimer.java:114)
Вы должны использовать [планировщик] (http://developer.android.com/reference/java/util/concurrent/ScheduledThreadPoolExecutor.html) – mbmc