Sto cercando di creare un jobService. Ecco come appare onStartJob().JobScheduler Android non si fermerà con jobFinished (params, false)
@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;
}
Ecco il codice che dovrebbe iniziare il lavoro.
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");
}
Non riesco a fermarlo. Continua a sparare ogni 1-5 minuti. Ho messo jobFinished (params, false) in onStartJob() e ho commentato l'operazione per provare ad eliminarlo subito dopo l'avvio, ma continua a sparare. Sembra che jobFinished() licenzi qualcosa, mentre onDestroy() viene chiamato e il mio servizio viene distrutto, ma poi un altro job arriva con lo stesso ID e avvia tutto il backup.
Ho BIND_JOB_SERVICE nel manifest come mostra ogni esempio.
Qualche idea sul perché jobFinished (params, false) non sembra uccidere setPeriodic (60000)?
La risposta di Tom dovrebbe essere accettata. Stai creando un lavoro periodico e utilizzandolo come one-shot, il che non ha senso in quanto ci sono modi per farlo correttamente. Inoltre, si stanno annullando TUTTI i lavori che potrebbero essere programmati, non quello desiderato. –