【问题标题】:Scheduling JobService on Android在 Android 上调度 JobService
【发布时间】:2018-03-13 02:04:27
【问题描述】:

我有一个工作服务,我想每三个小时执行一次,我已经制作了 jobservice 课程,但我不知道如何每三个小时执行一次。

这是我的 Jobservice 课程

public class CleanupJobService extends JobService {
private static final String TAG = CleanupJobService.class.getSimpleName();

@Override
public boolean onStartJob(JobParameters params) {
    Log.d(TAG, "Cleanup job started");
    new CleanupTask().execute(params);

    //Work is not yet complete
    return true;
}

@Override
public boolean onStopJob(JobParameters params) {
    //No need to reschedule any jobs
    return false;
}

/* Handle access to the database on a background thread */
private class CleanupTask extends AsyncTask<JobParameters, Void, JobParameters> {

    @Override
    protected JobParameters doInBackground(JobParameters... params) {
        String where = String.format("%s = ?", DatabaseContract.TaskColumns.IS_COMPLETE);
        String[] args = {"1"};

        int count = getContentResolver().delete(DatabaseContract.CONTENT_URI, where, args);
        Log.d(TAG, "Cleaned up " + count + " completed tasks");

        return params[0];
    }

    @Override
    protected void onPostExecute(JobParameters jobParameters) {
        //Notify that the work is now done
        jobFinished(jobParameters, false);
    }
}

}

并在 Manifest 上注册

    <service
        android:name=".data.CleanupJobService"
        android:permission="android.permission.BIND_JOB_SERVICE"
        android:exported="true"/>

有什么办法解决这个问题吗?谢谢!

【问题讨论】:

  • 已解决,我正在使用 jobInfo 类来解决此问题,代码应如下所示 ComponentName jobService = new ComponentName(getContext(), CleanupJobService.class); JobInfo task = new JobInfo.Builder(CLEANUP_JOB_ID, jobService) .setPeriodic(jobInterval) .setPersisted(true) .build();

标签: android scheduling jobservice


【解决方案1】:

解决了,我正在使用jobInfo类来解决这个问题,代码应该是这样的

ComponentName jobService = new ComponentName(getContext(), CleanupJobService.class); 
JobInfo task = new JobInfo.Builder(CLEANUP_JOB_ID, jobService) 
           .setPeriodic(jobInterval) 
           .setPersisted(true) 
           .build();

jobInterval 是我们希望服务执行的预定义时间,类型为 Long,格式为毫秒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 2019-06-19
    • 1970-01-01
    相关资源
    最近更新 更多