Android PerodicWorkRequest运行一段时间后停止



我创建了一个带有Worker的Android应用程序,它可以将手机的电池电量报告给远程服务器。worker在主活动OnCreate中注册,如下

PeriodicWorkRequest pwr = new PeriodicWorkRequest.Builder(BatteryReportWorker.class,
        15, TimeUnit.MINUTES).setConstraints(
                new Constraints.Builder()
                        .setRequiredNetworkType(NetworkType.CONNECTED)
                        .build())
        .build();
workManager.enqueueUniquePeriodicWork("BatteryReportWorker", ExistingPeriodicWorkPolicy.REPLACE, pwr);

这在一段时间内工作得很好,但在不到一天的时间内,Worker停止向后端发送报告。简单地打开应用程序,不做任何事情,立即唤醒工人和另一个报告立即发送,这让我认为安卓只是不运行它了。为什么Android会在一段时间后停止运行周期性的工作请求?如果工作经理决定停止运行工人,我怎么去尝试找出原因呢?

我已经检查了几件事:

  • 这不是三星电池睡眠的问题,因为它也发生在谷歌Pixel手机上
  • 我也相信这不是应用程序的暂停功能,因为它需要不到一天的应用程序停止发送报告

WorkManager坚持节能功能和最佳实践,如打盹模式,所以你不必担心它。

从Android 6开始,为了节省电池,引入了瞌睡模式,它将后台任务延迟到下一个维护窗口或设备插入或使用时。

按此来理解小睡模式

最新更新