我的项目中有以下代码,但是当我在我的Android模拟器上运行它时,它不会打印任何日志,因为它应该每15分钟打印一次。
public class JobSchedulerService extends JobService {
JobParameters params;
DoItTask doIt;
@Override
public boolean onStartJob(JobParameters params) {
this.params = params;
Log.d("TestService", "Work to be called from here");
doIt = new DoItTask();
doIt.execute();
return false;
}
@Override
public boolean onStopJob(JobParameters params) {
Log.d("TestService", "System calling to stop the job here");
if (doIt != null)
doIt.cancel(true);
return false;
}
private class DoItTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPostExecute(Void aVoid) {
Log.d("DoItTask", "Clean up the task here and call jobFinished...");
jobFinished(params, false);
super.onPostExecute(aVoid);
}
@Override
protected Void doInBackground(Void... params) {
Log.d("DoItTask", "Working here...");
return null;
}
}
}
我在我的主活动 java 中称之为
ComponentName componentName = new ComponentName(getApplicationContext(), JobSchedulerService.class);
JobInfo jobInfo = new JobInfo.Builder(1, componentName).setPeriodic(900002).build();
我在应用程序标签下的维护节中也有这个
<service android:name=".JobSchedulerService"
android:permission="android.permission.BIND_JOB_SERVICE" />
要使用 JobScheduler
,您需要:
- 创建一个
JobInfo
,就像你正在做的那样 - 通过
getSystemService()
获取JobScheduler
实例 - 在
JobScheduler
上呼叫schedule()
,将其传递JobInfo