如何取消未保存Driver的FirebaseJobDispatcher历史任务?关机可行吗?
如何取消未保存Driver的FirebaseJobDispatcher历史任务?
我来帮你解决这个困扰——当你没保存之前调度任务用的Driver实例时,确实没法直接用常规的dispatcher.cancelAll()取消那些历史任务,但有几个靠谱的办法可以搞定:
重新创建同配置的Driver实例
FirebaseJobDispatcher的任务是和Driver的类型/配置绑定的,你根本不需要保存原来的Driver对象,只要重新创建一个完全一样的Driver就行。比如之前用的是GooglePlayDriver,那直接再实例化一个:Driver driver = new GooglePlayDriver(context); FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(driver); dispatcher.cancelAll();只要Driver的类型和配置和之前一致,这个新的Dispatcher就能识别并取消所有用该Driver调度过的任务,不管是之前的历史任务还是当前的。
按标签单独取消(记得标签的话)
如果你还记得之前给历史任务设置的标签(Tag),也可以精准取消单个任务:dispatcher.cancel("your-historical-job-tag");这种方式适合你能回忆起部分任务标签的场景。
再说说你关心的关机问题:关机不能取消这些任务。FirebaseJobDispatcher的任务是持久化存储在系统中的,设备重启后这些任务依然会保留,除非你主动取消、任务执行完成或者达到过期时间。
内容的提问来源于stack exchange,提问作者eric
相关产品推荐
相关产品推荐

