我正在尝试创建一个jobService。这是 onStartJob() 的样子。
@Override
public boolean onStartJob(JobParameters params) {
Log.d(TAG, "onStartJob");
Log.d(TAG, "Params= " + params.getJobId());
param = params;
jobFinished(params, false);
//startAsync();
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
Log.d(TAG, "onStopJob");
return false;
}
这是应该开始工作的代码。
public void startJobScheduler(){
Log.d(TAG, "inside startJobScheduler");
Activity activity = this.cordova.getActivity();
Context context = activity.getApplicationContext();
mJobScheduler = (JobScheduler)context.getSystemService(Context.JOB_SCHEDULER_SERVICE );
JobInfo.Builder job = new JobInfo.Builder(111, new ComponentName(context, JobSchedulerService.class));
job.setPeriodic(60000);
Log.d(TAG, "before mJobScheduler.schedule(job.build())");
if( mJobScheduler.schedule( job.build() ) <= 0 ) {
Log.d(TAG, "job schedule failed");
}
Log.d(TAG, "333");
}
我不能让它停下来。它只是保持每1-5分钟发射一次。我将 jobFinished(params, false) 放入 onStartJob() 并注释掉任务以在它开始后立即将其杀死,但它只是不断触发。似乎 jobFinished() 触发了一些事情,因为 onDestroy() 被调用并且我的服务被破坏了,但是随后另一个具有相同 ID 的作业进入并重新启动它。
就像每个示例所示,我在清单中有 BIND_JOB_SERVICE。
关于为什么 jobFinished(params, false) 似乎没有杀死 setPeriodic(60000) 的任何想法?