根据文档,每个uid必须有唯一的作业ID。 如果我使用第三方库也安排作业,这是否意味着我不能使用与他们相同的作业ID?如果是这样,我该如何避免这些冲突?
如果我使用一个也会调度任务的第三方库,这是否意味着我不能使用与他们相同的任务ID?
是的。
那么,我如何避免这些冲突?
询问库的开发者他们使用哪些任务ID,或者这些任务ID是否可以以某种方式进行配置。
JobScheduler
id
getAllPendingJobs()
JobScheduler
的第三方库,也不要提供详细信息或可配置性。"现在变得强制性" --我会描述为“更重要”。"那么听起来像是一个严重的设计缺陷" --正确。但是根据定义,没有办法生成一个不能被其他东西生成的唯一数字。使用随机整数使你不太可能与某些东西发生冲突,但不太可能!=不可能。 - CommonsWareid
资源),并说“您需要确保这是跨应用程序更新的稳定ID,因此可能不基于资源ID”。因此,没有系统提供的方法来确保您不会在作业ID上发生冲突。 - CommonsWareJobScheduler
上使用getAllPendingJobs()
来查找已经使用的ID,以避免与它们发生冲突。但是,库可能不会这样做,并且存在竞争条件,因此这只有适度的好处。这并不能保证您使用的ID不会被库同时或稍后使用。 - CommonsWare