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() に入れ、タスクをコメントアウトして、開始直後に強制終了しようとしましたが、起動し続けます。onDestroy() が呼び出されてサービスが破棄されると、jobFinished() が何かを起動するようですが、同じ ID を持つ別のジョブが入ってきて、すべてバックアップを開始します。
すべての例が示すように、マニフェストに BIND_JOB_SERVICE があります。
jobFinished(params, false) が setPeriodic(60000) を強制終了していないように見える理由についてのアイデアはありますか?