У меня есть простая основная активность, которая содержит поток для обновления времени и отображения его в пользовательском интерфейсе. Вот оно:Темы продолжаются, когда активность перезапускается
final Runnable runnableTime = new Runnable() {
@Override
public void run() {
{
Date d = new Date();
CharSequence timeString = DateFormat.format(
"hh: mm: ss -- d/MM/yyyy ", d.getTime());
infoEntries.get(0).setDetails((String) timeString);
c2_adapter.notifyDataSetChanged();
System.out.println(timeString);
handler.postDelayed(this, 1000);
}
}
};
handler.post(runnableTime);
Теперь моя проблема заключается в том, что, когда я перезагружать деятельность с помощью этого метода:
public void restart() {
finish();
startActivity(getIntent());
}
Активность перезагружается просто отлично, но я теперь 2 из тех же нитей, работает в фон и время больше не обновляется в пользовательском интерфейсе.
Я попытался создать свой собственный Runnable, который расширяет Runnable для меня, чтобы иметь возможность завершить runnable при перезапуске. Но это вызвало больше проблем.
Ive перекрываться эти методы в этой моде:
public void restart() {
finish();
startActivity(getIntent());
}
@Override
public void onResume(){
super.onResume();
handler.post(runnableTime);
}
@Override
public void onPause(){
super.onPause();
handler.removeCallbacks(null);
}
Вот время элемент, который вызывается в методе по созданию, а также внутри Teh таймера ^:
Date d = new Date();
CharSequence timeString = DateFormat.format("hh: mm: ss -- d/MM/yyyy ",
d.getTime());
infoEntries.add(new ConsoleItem((String) timeString));
Кто-нибудь есть решение для этого?
Заранее спасибо за ваше время :)
Это выглядит намного чище и понятнее. Но я не уверен, как реализовать паузу. Потому что он все еще не обновляет его правильно. Теперь время не обновляется. –
У вас есть ListView или что-то вроде этого? в вашей деятельности вам нужно переопределить метод onPause() класса Activity, просто добавьте строку running = false сразу после super.onPause(). – Eddy
Да Время находится внутри списка. –