在JobService中添加onBind方法,并返回一个JobServiceEngine的实例,这样就可以确保onStartJob被调用。如下所示:
public class MyJobService extends JobService {
private MyJobServiceEngine myJobServiceEngine;
@Override
public void onCreate() {
super.onCreate();
myJobServiceEngine = new MyJobServiceEngine(this);
}
@Override
public boolean onStartJob(JobParameters jobParameters) {
// do the job here
return true; // true if the job is still running, false if it's done
}
@Override
public boolean onStopJob(JobParameters jobParameters) {
// stop the job here
return false; // false to reschedule the job, true to drop it
}
@Override
public IBinder onBind(Intent intent) {
return myJobServiceEngine.getBinder();
}
private static class MyJobServiceEngine extends JobServiceEngine {
private MyJobService myJobService;
public MyJobServiceEngine(MyJobService jobService) {
super(jobService);
myJobService = jobService;
}
@Override
public boolean onStartJob(JobParameters params) {
return myJobService.onStartJob(params);
}
@Override
public boolean onStopJob(JobParameters params) {
return myJobService.onStopJob(params);
}
}
}
最后,在清单文件中注册JobService。