情况:
(1)onStartJob() 返回假。
(2)onStartJob()返回false后系统收到取消请求。(例如,onStartJob()返回后调用jobScheduler.cancelAll();)
(3)调用jobFinished(params,false); onStartJob() 后不久返回 true。
(4)onStartJob() 返回true,不再满足要求。
(5)onStartJob()返回true后调用jobScheduler.cancelAll();
请记住:
如果系统确定您必须停止执行作业,甚至在您有机会调用 jobFinished() 之前,就会调用 onStopJob()。
说明:
(1)(2)(3) 如果您通过在 onStartJob() 中返回 false 或通过调用 jobFinished() 告诉系统您的工作已完成,系统将不会为您的工作调用 onStopJob(),因为系统没有至。
(4)系统会为你调用onStopJob(),但在不满足要求后需要很长时间,可能需要1分钟(在小米4c上测试)。
(5)系统会为你调用 onStopJob()。
您的问题:
(1)how does the system know when my job stops running unless it calls onStopJob?
您可以调用 jobFinished() 或在 onStartJob() 中返回 false 以让系统知道您已完成工作。
(2)Is it guaranteed to be called?
这取决于情况。因此依靠 onStopJob() 来确定该工作已完成是不正确的。