У меня есть собственное приложение для реагирования, которое вызывает собственный модуль 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");
}
};