У меня есть собственное приложение реагирования, которое делает вызов к модулю Android, который я написал.Этот собственный модуль запускает службу на переднем плане, показывающую уведомление пользователю.Я сделал это, потому что я хочу, чтобы моя служба работала, даже когда приложение переходит в фоновый режим или экран отключен на телефоне.В рамках моей службы я планирую 2 задачи, используя ScheduledExecutorService
.Ниже приведен мой код из onStartCommand
в моем классе обслуживания.
Запуск «RunScanTask» запланирован на 0 секунд и будет выполняться каждые 13 секунд после этого.«StopScanTask» планируется запустить через 8 секунд и запускать каждые 13 секунд после этого.Это прекрасно работает, когда мой экран включен.Однако, когда я выключаю дисплей, задания либо вообще прекращаются, либо выполняются с интервалами, которые являются совершенно случайными.Есть ли способ заставить их работать правильно даже при выключенном дисплее?
final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
ScheduledFuture<?> startScanFuture = scheduler.scheduleAtFixedRate(runScanTask, 0, 13, TimeUnit.SECONDS);
ScheduledFuture<?> stopScanFuture = scheduler.scheduleAtFixedRate(stopScanTask, 8, 13, TimeUnit.SECONDS);
Runnable stopScanTask = new Runnable() {
public void run() {
Log.d("main", "STOP BLE SCAN");
}
};
Runnable runScanTask = new Runnable() {
public void run() {
Log.d("main", "RUN BLE SCAN");
}
};