JobScheduler 不工作
JobScheduler Not Working
我的项目中有以下代码,但是当我 运行 它在我的 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();
我的 mainfest 应用程序标签下也有这个
<service android:name=".JobSchedulerService"
android:permission="android.permission.BIND_JOB_SERVICE" />
要使用 JobScheduler
,您需要:
- 创建一个
JobInfo
,正如您所做的那样
- 通过
getSystemService()
获取JobScheduler
的实例
- 在
JobScheduler
上调用 schedule()
,将其传递给 JobInfo
我的项目中有以下代码,但是当我 运行 它在我的 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();
我的 mainfest 应用程序标签下也有这个
<service android:name=".JobSchedulerService"
android:permission="android.permission.BIND_JOB_SERVICE" />
要使用 JobScheduler
,您需要:
- 创建一个
JobInfo
,正如您所做的那样 - 通过
getSystemService()
获取 - 在
JobScheduler
上调用schedule()
,将其传递给JobInfo
JobScheduler
的实例