Может ли кто-нибудь сказать мне, существует ли эквивалент для setInterval / setTimeout для Android? Есть ли у кого-нибудь пример того, как это сделать?
java
javascript
android
settimeout
karse23
источник
источник
MyActivityName.this.myFunctionOnActivity()
Handler timeout = new Handler(); final Runnable r = new Runnable{...}; timeout.postDelayed(r, 300);
и если вы хотите отменить это:timeout.removeCallbacks(r);
setInterval ()
функция, которая повторяется каждые n миллисекунд
Javascript
Приблизительный эквивалент Java
SetTimeout ()
функция, которая работает только через n миллисекунд
Javascript
Приблизительный эквивалент Java
источник
scheduleAtFixedRate
метода, как вы отмените таймер внутри действия после его завершения?Если вас не беспокоит разбудить телефон или вернуть приложение из мертвых, попробуйте:
источник
В зависимости от того, чего вы действительно хотите достичь, вам следует взглянуть на обработчики Android:
http://developer.android.com/reference/android/os/Handler.html
Если вы ранее использовали javascript setTimeout () и т. Д. Для планирования задачи, которая будет запускаться в будущем, это способ сделать это в Android (postDelayed / sendMessageDelayed).
Обратите внимание, что ни обработчики, ни таймеры не выводят телефон Android из спящего режима. Другими словами, если вы хотите запланировать что-то, что действительно произойдет, даже если экран выключен / процессор спит, вам также необходимо проверить AlarmManager.
источник
Я не очень разбираюсь в JavaScript, но думаю, что таймеры могут быть тем, что вы ищете.
http://developer.android.com/reference/java/util/Timer.html
По ссылке:
One-shot запланированы на абсолютное время или после относительной задержки. Повторяющиеся задачи планируются либо с фиксированным периодом, либо с фиксированной ставкой.
источник
Первый ответ, безусловно, правильный, и именно на нем я основал эту лямбда-версию, которая намного короче по синтаксису. Поскольку Runnable имеет только 1 метод переопределения run (), мы можем использовать лямбда:
источник
источник
Вот эквивалент setTimeout, наиболее полезный при попытке обновить пользовательский интерфейс после задержки.
Как вы, возможно, знаете, обновление пользовательского интерфейса может быть выполнено только из потока пользовательского интерфейса. AsyncTask делает это за вас, вызывая свой метод onPostExecute из этого потока.
источник
onProgressUpdate()
также можно использовать для моделированияsetInterval()
. 2.AsyncTask
работает в пуле потоков (или только в одном потоке), поэтому a. возможно, придется подождать, покаAsyncTask
закончит другой ; б . он займет один поток из пула.Я создавал mp3-плеер для Android, я хотел обновлять текущее время каждые 500 мс, поэтому я сделал это так
setInterval
который рекурсивно вызывает тот же метод
источник
Котлин:
Вы также можете использовать CountDownTimer:
И в вашем коде:
источник