哪种更好的方法可以在引导完成时重新安排作业?

Which is better way to re-schedule a job on boot completed?

可以在 android 作业调度程序中以 2 种方式重新安排作业。

  1. 使用 .setPersisted(true)
  2. 通过在 BOOT_COMPLETED 广播接收器中再次安排。

对于周期性作业,以下哪种方法更好?

我不会说有更好的方法。这取决于应用程序中作业的用例。两者都需要 RECEIVE_BOOT_COMPLETED 使用权限。

如果用户可以完成周期性任务(作业)on/off,或者有一个作业的数据受约束等待并且它应该在重新启动后持续存在,那么使用 setPersisted(true) 功能可能是有意义的.这样你就不需要担心做任何事情,并且作业会在启动时自动从磁盘加载。根据我的理解,还应该从重新启动之前停止的地方安排作业,以便更统一地安排作业。

否则,如果您不想在收到 BOOT_COMPLETED 意图之前安排此作业(可能有很多原因),那么在收到此意图后可能是安排的正确位置工作。您还可能不仅要重新安排接收 BOOT_COMPLETED 意图,还要重新安排其他意图,例如 MY_PACKAGED_REPLACED。所有这些意图都可以在同一个 BroadcastReceiver 中接收和安排作业。

采用这种或那种方式很可能还有其他原因。