Я пытаюсь создать 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(), и мой сервис уничтожается, но затем приходит другое задание с тем же идентификатором и запускает все обратно.
У меня есть BIND_JOB_SERVICE в манифесте, как показывает каждый пример.
Любые идеи о том, почему jobFinished(params, false) не убивает setPeriodic(60000)?