Я пытаюсь установить изображения с задержкой 600 мс, используя таймер обратного отсчета следующим образом:
protected void onCreate(Bundle savedInstanceState) {
int order[3];
index=0;
image1.setOnClickListener(this);
@Override
public void onClick(View arg0)
{
order={2,1,3};
do_switches();
}
private void do_switches()
{
new CountdownTimer(3*600, 600) {
public void onTick(long millisUntilFinished) {
switch(order[index]){
case 1:
image1.setImageResource(R.drawable.one);
break;
case 2:
image2.setImageResource(R.drawable.two);
break;
case 3:
image3.setImageResource(R.drawable.three);
break;
}
index++;
}
public void onFinish() {
}
}.start();
}
}
Это пример, но в моем реальном коде я использую большие массивы (размером около 50). Моя проблема в том, что таймер обратного отсчета не всегда идет до последнего места в массиве. Иногда работает, но иногда останавливается до достижения последней точки моего массива. Однако, если я увеличу интервал времени до 2000 мс, он всегда работает. Определенно, происходит некоторая обработка, которая задерживает это, но я не ожидаю, что обратный отсчет не сработает только потому, что я сократил интервал. Может кто-нибудь сказать мне, что я могу сделать, чтобы убедиться, что таймер обратного отсчета не останавливается, прежде чем пройти через весь мой массив или есть лучший способ сделать это.
Я также пытался использовать таймер с scheduleAtFixedRate, но я получил сообщение о том, что не могу касаться представлений в потоке, поскольку они не были созданы в потоке
Пожалуйста, помогите
Спасибо