我开始这样的工作:
JobScheduler scheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
if(scheduler.getPendingJob(JOB_NUMBER) == null) {
ComponentName componentName = new ComponentName(this, mService.class);
JobInfo info = new JobInfo.Builder(JOB_NUMBER, componentName)
.setRequiresCharging(false)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
.setPersisted(true)
.setPeriodic(60 * 60 * 1000)
.build();
int resultCode = scheduler.schedule(info);
if (resultCode == JobScheduler.RESULT_SUCCESS) {
Log.d(TAG, "Service is not running, Job " + String.valueOf(JOB_NUMBER) + " Scheduled.");
} else {
Log.d(TAG, "Service is not running, However job scheduling failed.");
}
} else{
Log.d(TAG, "Service is already scheduled.");
}
在服务中:
@Override
public boolean onStartJob(JobParameters jobParameters) {
Log.d("Service", "v1.2 Started");
我得到输出“服务正在运行”但不是“服务已启动”。并且应用程序也没有接收到服务应该发送的广播。
这一切在 Android 8 中都可以完美运行,但在 7 中则不然。
编辑:我猜该服务必须正在运行,因为当我关闭并重新启动应用程序时,我收到消息“服务已安排好”。那么,为什么我看不到我的服务的任何日志输出呢?在牛轧糖中,它是否像在奥利奥中一样直接运行?或者我必须等待一个小时才能开始?
相关分类