Czy ktoś może mi powiedzieć, czy istnieje odpowiednik setInterval / setTimeout dla Androida? Czy ktoś ma jakiś przykład, jak to zrobić?
java
javascript
android
settimeout
karse23
źródło
źródło
MyActivityName.this.myFunctionOnActivity()
Handler timeout = new Handler(); final Runnable r = new Runnable{...}; timeout.postDelayed(r, 300);
a jeśli chcesz to anulować:timeout.removeCallbacks(r);
setInterval ()
funkcja, która powtarza się co n milisekund
Javascript
Przybliżony odpowiednik Java
setTimeout ()
funkcja, która działa tylko po n milisekundach
Javascript
Przybliżony odpowiednik Java
źródło
scheduleAtFixedRate
metody, jak anulować licznik czasu w ramach czynności po zakończeniu tej czynności?Jeśli nie martwisz się wybudzeniem telefonu lub przywróceniem aplikacji z martwych, spróbuj:
źródło
W zależności od tego, co naprawdę chcesz osiągnąć, spójrz na moduły obsługi Androida:
http://developer.android.com/reference/android/os/Handler.html
Jeśli wcześniej używałeś javascript setTimeout () etc do planowania zadania do wykonania w przyszłości, jest to sposób na zrobienie tego w Androidzie (postDelayed / sendMessageDelayed).
Pamiętaj, że ani Handlery, ani Timery nie powodują wybudzenia telefonu z Androidem z trybu uśpienia. Innymi słowy, jeśli chcesz zaplanować, aby coś się wydarzyło, nawet jeśli ekran jest wyłączony / procesor śpi, musisz również sprawdzić AlarmManager.
źródło
Nie wiem zbyt wiele o JavaScript, ale myślę, że Timery mogą być tym, czego szukasz.
http://developer.android.com/reference/java/util/Timer.html
Z linku:
Zabiegi jednorazowe zaplanowano na czas bezwzględny lub po względnym opóźnieniu. Zadania cykliczne są planowane na stały okres lub według stałej stawki.
źródło
Pierwsza odpowiedź jest zdecydowanie poprawna i na niej oparłem tę wersję lambda, która jest znacznie krótsza w składni. Ponieważ Runnable ma tylko jedną metodę nadpisywania „run ()”, możemy użyć lambda:
źródło
źródło
Oto odpowiednik setTimeout, przydatny głównie podczas próby zaktualizowania interfejsu użytkownika po opóźnieniu.
Jak być może wiesz, aktualizację interfejsu użytkownika można przeprowadzić tylko z poziomu wątku interfejsu użytkownika. AsyncTask robi to za Ciebie, wywołując metodę onPostExecute z tego wątku.
źródło
onProgressUpdate()
może być również używany do symulacjisetInterval()
. 2.AsyncTask
działa na puli wątków (lub tylko pojedynczym wątku), więc plik. może trzeba będzie poczekać, ażAsyncTask
skończy się inny ; b . zajmie jeden wątek z puli.Tworzyłem odtwarzacz mp3 na Androida, chciałem aktualizować aktualny czas co 500 ms, więc zrobiłem to w ten sposób
setInterval
która rekurencyjnie wywołuje tę samą metodę
źródło