Mam tabelę z pewnymi wartościami i chcę to zrobićaktualizuj UI (wartości) co 10 sekund. i chcę pokazać użytkownikowi zegar odliczający, aby wiedzieć, co się stanie ... ale się zawiesza. kod, którego użyłem, jest pokazany poniżej:
tv2_r7= (TextView) this.findViewById(R.id.textView2_r7);
final Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
int i = 10;
public void run() {
tv2_r7.setText(String.valueOf(i));
i--;
if (i< 0)
timer.cancel();
}
}, 0, 1000);
działa dobrze w prostej aplikacji java, kiedy mam System.out.println(i--);
zamiast tv2_r7.setText(String.valueOf(i));
i--;
Odpowiedzi:
2 dla odpowiedzi № 1Zaktualizowałeś wartość UI w zegarze, która jest nieprawidłowa. Musisz użyć
runOnUIThread
Metoda tam.
tv2_r7 = (TextView) this.findViewById(R.id.textView2_r7);
final Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask()
{
int i = 10;
public void run()
{
runOnUIThread(new Runnable()
{
@Override
public void run()
{
tv2_r7.setText(String.valueOf(i));
}
});
i--;
if (i < 0)
timer.cancel();
}
}, 0, 1000);
}