Używam postDelayed
sposobu Handler
w celu wykonywania czynności po pewnym czasie:Jak zmienić/zresetować stanowisko obsługi opóźnionego czasu?
private static int time_to_wait = 2000;
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
// Make Action
}
}, time_to_wait);
Teraz w połowie czasu oczekiwania chcę zmienić wartość pozostałych milisekund tytułu niektóre wyniki przetwarzania, załóżmy, że teraz czekał 1000 ms i chcę, aby zaczął ponownie liczyć od ponownie, więc ustawiam wartość time_to_wait
na 2000, ale nie bierze to pod uwagę, ponieważ zajmuje tylko wartość zmiennej (2000) i po prostu czeka, aż do tego czasu, niezależnie od zmiany time_to_wait
wartość do dowolnej innej wartości.
Musisz anulować i ponownie wyświetlić wersję, którą mogę uruchomić. [StackOverflow] [1] [1]: http://stackoverflow.com/questions/7407242/how-to-cancel-handler-postdelayed – Kaediil
@Kaediil nie będzie tak Efektywny w moim przypadku –
'int' jest typem pierwotnym i jest przekazywany przez wartość - wartość jest kopiowana i nie jest w żaden sposób połączona z pierwotną zmienną pierwotną. Jeśli przekazujesz zmienną 'int' do jakiejś metody, a następnie spróbuj zmienić tę zmienną gdzieś indziej (poza tą metodą), zmiany tej zmiennej nie będą odzwierciedlane w tej metodzie, ponieważ posiada ona własną kopię zmiennej – Drew