【发布时间】:2019-05-12 02:10:34
【问题描述】:
我有一个反应原生应用程序,它调用我编写的原生 android 模块。该原生模块在前台启动服务,向用户显示通知。我这样做是因为我希望我的服务即使在应用程序进入后台或手机上的屏幕显示关闭时也能运行。在我的服务中,我正在使用 ScheduledExecutorService 安排 2 个任务。下面是我的 Service 类中 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");
}
};
【问题讨论】:
标签: android scheduled-tasks background-service foreground-service