我一直在使用 Job Scheduler API。对于棉花糖来说,它非常有效。但对于 Lollipop Device(5.1.1),它不会立即启动(需要随机数分钟)。我的意思是 onStartJob() 方法需要一些时间来调用。
以下是我正在安排我的工作的代码片段。
private void scheduleJob() {
ComponentName serviceName = new ComponentName(this, SampleJobService.class);
JobInfo jobInfo = new JobInfo.Builder(1000, serviceName)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_NONE)
.setRequiresCharging(false)
.setPeriodic(60 * 1000)
.build();
JobScheduler scheduler = (JobScheduler) this.getSystemService(Context.JOB_SCHEDULER_SERVICE);
int result = scheduler.schedule(jobInfo);
if (result == JobScheduler.RESULT_SUCCESS) {
Log.e("khushank", "Job scheduled successfully!");
Toast.makeText(this, "Job scheduled successfully!", Toast.LENGTH_LONG).show();
} else {
Log.e("khushank", "not able to start result: " + result);
}
}
以下是我的简单工作服务,只需编写日志
public class SampleJobService extends JobService {
@Override
public boolean onStartJob(JobParameters params) {
Log.e("khushank","job started with id = "+params.getJobId());
return false;
}
@Override
public boolean onStopJob(JobParameters params) {
Log.e("khushank","job Stopped with id = "+params.getJobId());
return false;
}
}
当我运行这个示例应用程序时,日志打印如下:
12-16 16:28:17.040 27119-27119/com.example.inkkashy02.myapplication E/khushank: Job scheduled successfully!
12-16 16:29:17.032 27119-27119/com.example.inkkashy02.myapplication E/khushank: job started with id = 1000
无法调试为什么在 Lollipop 中调用 onStartJob() 需要将近一分钟。对于 Marshmallow,一旦安排了作业,它就会被调用。请告诉这个问题的根本原因。