首页 > 解决方案 > 作业调度程序不会在 android 的给定时间上重复其工作

问题描述

实际上,在 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();
    }

这是我的工作服务类代码:

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;
    }
}

这是我的异步任务代码:

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";
    }
}

标签: android-asynctaskandroid-jobschedulerbackground-threadjobservice

解决方案


推荐阅读