我正在尝试定期运行并需要连接到网络的后台作业。我正在以这种方式使用JobScheduler服务安排作业:
JobScheduler js = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
if(js!=null) {
if (js.getAllPendingJobs().size() == 0) {//No jobs scheduled in previous boots. Schedule one
JobInfo.Builder b = new JobInfo.Builder(1, new ComponentName("my.app.name", MyJob.class.getName()));
b.setPeriodic(420000);
b.setPersisted(true);
b.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
js.schedule(b.build());
}
}
当屏幕打开时,作业正常运行,但是一旦它关闭,它就不再运行,直到它再次打开(然后立即启动)。 我猜它没有运行,因为当设备空闲时没有网络连接(即使我检查设备Wi-Fi和3G选项说保持连接在空闲时保持活动状态)。
即使设备空闲/屏幕关闭,如何让我的服务运行?