gpt4 book ai didi

android - 在 Android 上,是否总是调用 onStopJob?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:34:06 25 4
gpt4 key购买 nike

我正在尝试实现我的第一个 JobService。我知道对 onStartJob 的调用实际上是有保证的(是的,如果我指定一些没有过期时间的离谱要求,会有一些优势)。但是 onStopJob 怎么样?是否保证被调用?

具体来说,我有一项工作将在后台执行。但我有办法知道工作何时完成(例如 sharedPrefs)。我希望依靠何时调用 onStopJob 向用户发送作业已完成的通知。

注意:onStopJob 是发送通知的一个方便的地方,因为我已经在检查作业是否已完成,以便知道我是否应该重试。

附注考虑一些可能有帮助的事情(我也在考虑):如果我的 onStartJob 返回 true,系统如何知道我的作业何时停止运行,除非它调用 onStopJob

最佳答案

情况:

(1)onStartJob() return false.
(2)System received a cancel request after onStartJob() return false.(For example,invoke jobScheduler.cancelAll(); after onStartJob() return.)
(3)Invoke jobFinished(params,false); soon after onStartJob() return true.
(4)onStartJob() return true and requirements are no longer met.
(5)Call jobScheduler.cancelAll() after onStartJob() return true;

牢记:
onStopJob() 如果系统确定您 甚至在您有机会调用 jobFinished() 之前就必须停止执行您的工作。

解释:
(1)(2)(3)如果您通过在 onStartJob() 中返回 false 或调用 jobFinished() 告诉系统您的作业已完成,系统将不会为您的作业调用 onStopJob(),因为系统不必这样做。

(4)系统会为你调用onStopJob(),但在不满足要求后需要很长时间,可能需要1分钟(小米4c测试)。

(5)系统会为你调用onStopJob()。

您的问题:
(1) 除非调用 onStopJob,否则系统如何知道我的作业何时停止运行?
您可以调用 jobFinished() 或在 onStartJob() 中返回 false 让系统知道您已完成作业。

(2)是否保证被调用?
这取决于情况。因此依赖 onStopJob() 来确定作业已完成是不正确的。

关于android - 在 Android 上,是否总是调用 onStopJob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37689543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com