gpt4 book ai didi

android - JobService中jobFinished和onStopJob的交互

转载 作者:行者123 更新时间:2023-11-30 00:11:11 24 4
gpt4 key购买 nike

主要问题

假设我有一个派生自 JobService 的服务,我在 onStartJob 中返回 true 以指示我有一个长时间运行的外部线程来完成这项工作。

进一步说系统决定调用onStopJob

现在,在我正确停止线程后,是否应该调用 jobFinished

这些选项中的一个必须为真,但是哪个呢?

  1. jobFinished 必须始终在 onStartJob 返回 true 时被调用,无论 onStopJob 是否被调用
  2. 如果调用了 onStopJob,则不得调用
  3. jobFinished(可能存在空指针异常或其他问题的风险?)
  4. 如果onStopJob被调用,是否调用jobFinished并不重要

奖金问题

如果 onStopJob 被调用并返回 true 以重新安排作业,然后一旦线程停止 jobFinished 被调用 needsRescedule = false(反之亦然),将会发生什么?

最佳答案

最近我在研究这个 JobService,是的,它的 API 相当困惑,文档也很少。以下是对您的查询的回答

  • 如果 onStartJob 返回 true no,则必须始终调用 jobFinished
    不管是否调用了 onStopJob - Answer is NO
  • 不得调用 jobFinished如果调用了 onStopJob(可能存在空指针的风险
    异常(exception)或什么?) - 答案是否定的
  • 是否调用 jobFinished 无关紧要或者是否调用了 onStopJob - 在下面回答

Android 将使用您选择的 RetryStrategy 继续重试您的作业,直到

  • onStartJob 或 onStopJob 作业已返回 false
  • 或者你将 jobFinished with needsReschedule 调用为 false

my medium blog here regarding same...

关于android - JobService中jobFinished和onStopJob的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48096859/

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