У меня есть все oop, которые делают что-то в фоновом режиме каждые 15 минут, если я использую jabservise, l oop не запускается регулярно и останавливается после 10 циклов. Затем jabservise полностью останавливается через несколько дней.
функция для запуска задания в MainActivity:
JobInfo ji;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
ji = new JobInfo.Builder(JobID, cn)
.setPersisted(true)
.setPeriodic(RefreshInterval, 15 * 55 * 1000)
.build();
} else {
ji = new JobInfo.Builder(JobID, cn)
.setPersisted(true)
.setPeriodic(RefreshInterval)
.build();
}
JobScheduler jsc = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);
int resultCode = jsc.schedule(ji);
if (resultCode == JobScheduler.RESULT_SUCCESS) {
Toast.makeText(this, "Start", Toast.LENGTH_LONG).show();
Log.i("Job Scheduled");
} else
Log.i("Job Scheduling failed");
}
и класс My JobService:
public class MyJob extends JobService {
private boolean jobCancelled = false;
@Override
public boolean onStartJob(JobParameters jp) {
doBackgroundWork(jp);
return true;
}
@Override
public boolean onStopJob(JobParameters jp) {
jobCancelled = true;
Logger("Job Cancelled before completion");
return true;
}
void doBackgroundWork(final JobParameters jps) {
new Thread(new Runnable() {
@Override
public void run() {
int cc = 0;
while (!jobCancelled) {
cc++;
Logger("Thread for Loop : " + cc);
doSomething(); // It takes about a few seconds.
SystemClock.sleep(60 * 1000);
}
jobFinished(jps, false);
}
}).start();
}
}
Что я могу сделать, чтобы это l oop нон-стоп?