Я разрабатываю приложение для Android 2.3.3, и мне нужно запускать метод каждые X секунд .
В iOS у меня есть NSTimer , но в Android я не знаю, что использовать.
Кто-то порекомендовал мне Хендлера ; другой порекомендовал мне AlarmManager, но я не знаю, какой метод лучше подходит для NSTimer .
Это код, который я хочу реализовать в Android:
timer2 = [
NSTimer scheduledTimerWithTimeInterval:(1.0f/20.0f)
target:self
selector:@selector(loopTask)
userInfo:nil
repeats:YES
];
timer1 = [
NSTimer scheduledTimerWithTimeInterval:(1.0f/4.0f)
target:self
selector:@selector(isFree)
userInfo:nil
repeats:YES
];
Мне нужно что-то, что работает как NSTimer .
Что вы мне порекомендуете?
Ответы:
Это действительно зависит от того, как долго вам нужно запускать функцию.
Если это => 10 минут → я бы выбрал Alarm Manager.
А затем вы получаете эти трансляции через широковещательный приемник. Обратите внимание, что это нужно будет зарегистрировать в эфире в манифесте вашего приложения или с помощью
context.registerReceiver(receiver,filter);
метода. Для получения дополнительной информации о широковещательных приемниках обратитесь к официальной документации. Приемник трансляции .Если это = <10 минут → я бы пошел с обработчиком.
источник
h.removeCallbacks(this);
, иначе вам нужно поддерживать ссылку на runnable, чтобы иметь возможность удалить его. Если второй вариант желателен, описанный здесь метод может быть не лучшим вариантом.Используйте таймер на каждую секунду ...
источник
Вы можете попробовать этот код, чтобы вызывать обработчик каждые 15 секунд через onResume () и останавливать его, когда активность не отображается, через onPause ().
источник
Если вы знакомы с RxJava, вы можете использовать Observable.interval (), что довольно удобно.
Обратной стороной этого является то, что вам придется по-другому спроектировать опрос данных. Тем не менее, у способа реактивного программирования есть много преимуществ:
С RxAndroid вы можете обрабатывать потоки всего в 2 строчки кода.
Пожалуйста, проверьте RxJava. У него высокая кривая обучения, но он сделает обработку асинхронных вызовов в Android намного проще и чище.
источник
С помощью Kotlin мы теперь можем создать для этого универсальную функцию!
А чтобы использовать, просто сделайте:
источник
источник
Здесь я повторно использовал поток в onCreate () Activity, таймер не позволяет все в некоторых случаях Thread - это решение
В случае необходимости его можно остановить
источник
Здесь может быть полезен ответ на вашу проблему с использованием Rx Java и Rx Android .
источник