Планировщик заданий не повторяет свою работу на даче времени на андроид - PullRequest
0 голосов
/ 01 июля 2018

На самом деле в Android хотят запустить свою работу через 1 минуту, независимо от того, активно приложение или нет, но оно запускает мою работу примерно через 3,4 минуты, но я не хочу, пожалуйста, дайте мне совет, как я могу запустить его в соответствии с моими данными время.

Заранее спасибо.

Вот мой код:

ComponentName componentName = new ComponentName(MainActivity.this, JobSchedularClass.class);
        jobInfo = new JobInfo.Builder(code, componentName)
                .setMinimumLatency(1000)
                .setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
                .setOverrideDeadline(1000)
                .setPersisted(true)
                .build();
        jobScheduler = (JobScheduler) getSystemService(JOB_SCHEDULER_SERVICE);

    }

    public void Startjob(View view) {
        int code_result = jobScheduler.schedule(jobInfo);
        Toast.makeText(this, " Job scheduling...", Toast.LENGTH_SHORT).show();
        if (code_result == JobScheduler.RESULT_SUCCESS) {
            Toast.makeText(this, " Job scheduling done...", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, " Job scheduling  failed...", Toast.LENGTH_SHORT).show();
        }

    }

    public void Stopjob(View view) {

        jobScheduler.cancel(code);
        Toast.makeText(this, " Job cancel...", Toast.LENGTH_SHORT).show();
    }

Вот мой код класса обслуживания Job:

public class JobSchedularClass extends JobService {
    private static final String TAG = "JobSchedularClass";

   private BackgroundJob backgroundJob;
    @Override
    public boolean onStartJob(final JobParameters params) {

        Log.d(TAG, "onStartJob: ");

         backgroundJob=new BackgroundJob(){
            @Override
            protected void onPostExecute(String s) {
                Toast.makeText(getApplicationContext(),s,Toast.LENGTH_SHORT).show();
                jobFinished(params,true);

            }
        };

        backgroundJob.execute();
        return true;
    }

    @Override
    public boolean onStopJob(JobParameters params) {
        Log.d(TAG, "onStopJob: ");
        backgroundJob.cancel(true);
        return false;
    }
}

Вот мой код Async Task:

public class BackgroundJob extends AsyncTask<Void,Void,String> {
    private static final String TAG = "BackgroundJob";
    @Override
    protected String doInBackground(Void... voids) {
        Log.d(TAG, "doInBackground: ");
        return "BackGround Job is running";
    }
}
...