JobScheduler允许开发者创建在后台执行的job,当被预置的条件被满足时,这些job将在后台执行。尤其是在Android8.0之后,系统对后台任务限制的愈发严格。JobScheduler用来执行后台Job就特别实用。
使用步骤:
1.创建JobService
onStartJob
当系统要触发执行我们的Job时,会调用。
return false,系统会onStartJob这个方法返回的时候,我们要做的工作已经做完,这不是一个耗时操作。
return true的时候,系统会认为我们要执行一个耗时的工作,在onStartJob这个方法返回的时候,我们的工作仍然在异步执行。当我们的工作执行完成时,我们必须手动调用jobFinished。
务必要注意,如果onStartJob返回了true,在异步工作执行完成之后,我们必须手动调用jobFinished方法,如果不调用jobFinished,系统会一直认为我们在执行当前Job,那么系统就不会再入队其他的Job去执行,也就是说JobScheduler的执行队列就会被阻塞了.
onStopJob
当系统收到一个cancel job请求时,并且这个job仍然在执行,系统就会调用onStopJob方法也就是说系统收到取消请求时,并不会一定调用onStopJob方法,只有onStartJob返回true才调用。
需要注意的是,JobService是运行在我们应用的主线程,这意味着我们需要开新线程或者使用Handler或者AsyncTask来处理耗时的工作.
2.创建JobScheduler
要使用我们创建的JobService,我们必须使用系统的JobScheduler服务。
调用实例如下:

网友评论