工作管理器在三星Galaxy手机上手机进入打瞌睡模式后被取消



我正在尝试使用WorkManager运行后台服务。当应用程序进入后台时,我启动了工作管理器。每当WorkManger运行时,我还启动了后台服务。我可以在应用后台化后看到我的应用服务。此外,我可以看到它在我通过滑动应用程序列表关闭应用程序大约 15 分钟后启动。所以我确信工作管理器在开始时工作。但我认为它不适用于打瞌睡模式。从打瞌睡模式唤醒手机后,我也看不到我的服务。

我的代码:

public class MyWorker extends Worker {
public MyWorker() {
super();
}
@NonNull
@Override
public WorkerResult doWork() {
Intent intent = new Intent(getApplicationContext(), MyService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
MyJobIntentService.enqueueWork(getApplicationContext(), new Intent());
} else {
Intent intent = new Intent(getApplicationContext(), MyService.class);
getApplicationContext().startService(intent);
}
return WorkerResult.SUCCESS;
}
}
public void startWorkManger() {
PeriodicWorkRequest request = new PeriodicWorkRequest
.Builder(MyWorker.class, MIN_PERIODIC_INTERVAL_MILLIS, TimeUnit.MILLISECONDS).addTag(TAG).build();
mWorkManager.enqueue(request);
}

有什么问题吗?

作业调度程序仅在低电耗模式下以维护间隔执行作业。这样做是为了节省用户的电池。所以你所看到的是意料之中的。

有关详细信息,请阅读此文档有关打瞌睡模式。 https://developer.android.com/training/monitoring-device-state/doze-standby

最新更新