Android的JobIntentService文档中提到了"JobService执行时间限制"多长时间?

Kru*_*lur 9 service android android-8.0-oreo

在转换应用程序为Android Oreo做好准备时,我JobIntentService 在这里阅读了文档.

在那里我发现(重要部分强调):

当作为pre-O服务运行时,正常的服务执行语义适用:[...]作为Job运行时,将应用典型的JobService执行时间限制,之后作业将被停止(干净地,不是通过查杀过程)并重新安排以后继续执行.

如果我查看记录的限制,就没有关于任何执行时间限制的说法.同时JobScheduler没有提及任何东西.

  • 这是一个时间限制我应该不关心吗?
  • 它没有证件吗?
  • 或者不是/不再存在执行时间限制?
  • 或者我是否必须以可在任何给定时间点中断和重新启动的方式重新设计我的服务?最佳做法?

Com*_*are 10

Android的JobIntentService文档中提到了"JobService执行时间限制"多长时间?

在实践中,似乎是10分钟.我最初确定通过测试,但IIRC有人指出源代码中的限制.

这是一个时间限制我应该不关心吗?

如果你确定你的工作将在更短的时间内完成,是的,至少目前是这样.

它没有证件吗?

是.

或者不是/不再存在执行时间限制?

它是我最后一次测试时存在的.

或者我是否必须以可在任何给定时间点中断和重新启动的方式重新设计我的服务?

嗯,理想情况下,是的,特别是如果您使用超出时间的任何约束.例如,如果您说您的作业需要网络连接,并且设备失去连接,则您的作业将被停止.这可能会在10分钟的时间段过去之前发生.

最佳做法?

避免定期进行背景工作.

  • 我不明白“停止(干净地,而不是通过终止进程)”的定义,如果您正在执行一些操作,例如从服务器同步数据并将其存储到数据库,您将如何清楚地被告知您应该停止这样做它?如果您将在那里有 forech 循环,则没有办法如何干净地停止它。 (2认同)