Мое приложение работает с несколькими фотографиями. Я хочу взять новую за каждые несколько секунд и добавить ее к фотографиям, с которыми я работаю. Поэтому я написал этот код, используя собственный поток для ожидания, поэтому ui не замерзнет.Android: пользовательский интерфейс зависает, хотя использование Handler и postdelay
Handler handler = new Handler();
int time = 500;
for (int cnt = 10000; cnt > 0; cnt -= time) {
// Execute the code in run after time [ms] passed
handler.postDelayed(new Runnable() {
public void run() {
mainTask();
}
}, time);
}
Почему мой ui замерзает до окончания цикла for? Обычно показанные снимки должны быть обновлены в mainTask()
Спасибо за помощь!
[EDIT]
Он работает в настоящее время, я создал класс, который реализует Runnable и пусть он называет себя:
Handler handler = new Handler();
class DelayedTask implements Runnable {
int cnt, time;
Handler handler;
DelayedTask(int c, int t, Handler h) {cnt=c; time=t; handler=h;}
public void run() {
mainTask();
if (cnt > 0) {
cnt -= time;
handler.postDelayed(new DelayedTask(cnt, time, handler), time);
}
}
}
handler.postDelayed(new DelayedTask(cnt,time,handler), time);
Вы уверены, что не используете этот код в потоке пользовательского интерфейса? При вызове нового обработчика() в потоке без привязки петлителя возникнет исключение. –