JobScheduler使用中遇到的onStopJob没有回调的问题

今天主管说有一个延迟任务机制JobScheduler,我说我研究下,于是我搜索了下,这篇写的不错:http://blog.csdn.net/bboyfeiyu/article/details/44809395


按照文档说的写完之后效果也出来了,但是存在一个问题那就是取消任务的问题,就如上面博文所说:

JobScheduler使用中遇到的onStopJob没有回调的问题_第1张图片

于是我调用jobFinished方法后我以为onStopJob方法会被调用,却发现并没有执行,于是我开始看源码

JobScheduler使用中遇到的onStopJob没有回调的问题_第2张图片

发现这个方法执行的并没有去调用onStopJob方法,那么我就想到底什么时候会调用,我猜想是不是cancel的时候才会调用,于是我又去测试了一翻,结果发现还是没有调用(这边onStartJob我是10秒执行的),这就很尴尬了。{:大哭}

我又看了一遍上面的博文仔细的想了一下,他既然说onStopJob的调用与否和onStartJob的返回值有关,那是不是只有在onStartJob中执行完才会有效果,于是我在onStartJob方法里面加了一个延迟任务,任务没结束前去取消任务,果然onStopJob回调了,这真的是坑啊,取消任务还必须要开始后才能有效,然而想要达到真的取消只能另想他法了。

你可能感兴趣的:(JobScheduler使用中遇到的onStopJob没有回调的问题)