odwoływanie opiekuna.proces postdelayed
Używam handler.postDelayed()
, aby utworzyć okres oczekiwania przed kolejnym etapem mojej aplikacji. W okresie oczekiwania wyświetlane jest okno dialogowe z paskiem postępu i przyciskiem anuluj .
Mój problem polega na tym, że nie mogę znaleźć sposobu na anulowanie zadania postDelayed przed upływem czasu.
4 answers
Robię to, aby opublikować opóźniony runnable:
myHandler.postDelayed(myRunnable, SPLASH_DISPLAY_LENGTH);
I to do usunięcia: myHandler.removeCallbacks(myRunnable);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-30 01:27:44
W przypadku, gdy masz wiele wewnętrznych/anonimowych runnables przekazanych do tego samego programu obsługi i chcesz anulować wszystkie w tym samym zdarzeniu użyj
handler.removeCallbacksAndMessages(null);
Zgodnie z dokumentacją,
Usuń wszystkie oczekujące posty wywołań zwrotnych i wysłanych wiadomości, których obj jest token. Jeśli token jest null, wszystkie wywołania zwrotne i wiadomości zostaną usunięte.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-31 23:36:22
Innym sposobem jest obsługa samego Runnable:
Runnable r = new Runnable {
public void run() {
if (booleanCancelMember != false) {
//do what you need
}
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-25 22:24:57
To działało dla mnie, gdy zadzwoniłem CancelCallBacks (to) wewnątrz Post opóźniony runnable przekazując go przez boolean
Runnable runnable = new Runnable(){
@Override
public void run() {
Log.e("HANDLER", "run: Outside Runnable");
if (IsRecording) {
Log.e("HANDLER", "run: Runnable");
handler.postDelayed(this, 2000);
}else{
handler.removeCallbacks(this);
}
}
};
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-22 02:06:24