почему использование в то время как l oop в jobservice вызывает остановку jabservise? - PullRequest
0 голосов
/ 23 марта 2020

У меня есть все 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 нон-стоп?

...