正如here所述,不推荐使用通常的类WakefulBroadcastReceiver
。
因此,现在无法创建像以前的SDK版本那样的计划任务。谷歌说,我必须使用
https://developer.android.com/reference/android/app/job/JobScheduler.html
但是怎么样?
那么,现在背景计划任务最有用的解决方案是什么?
AlarmManager不再有用吗?
我的应用程序每天唤醒几次并使用AlarmManager更新通知。我不确定我要改变什么。我要实施什么?旧API和新API?或者只是最新的解决方案?
答案 0 :(得分:5)
现在无法创建像以前的SDK版本那样的计划任务
WakefulBroadcastReceiver
从未成为唯一的选择。例如,我的WakefulIntentService
可以追溯到2009年。添加到支持库中的the JobIntentService
取代了这两者。
但是怎么样?
嗯,the JavaDocs和elsewhere in the documentation涵盖了JobScheduler
,以及有关Android应用开发的书籍和课程。
现在什么是最有用的后台计划任务解决方案?
这完全取决于你想要如何定义“有用”,我不知道你的定义。
一般来说:
尽可能使用JobScheduler
如果您正在编写闹钟应用,请在setAlarmClock()
上使用AlarmManager
使用set...()
上的其他AlarmManager
方法向前兼容Android 5.0设备,可能是通过包装程序库(例如,Evernote的android-job
)
在可行的情况下使用推送消息传递(例如,FCM),如果您有能力依赖推送消息传递解决方案
AlarmManager不再有用吗?
对某些“有用”的定义“任何类型的定期后台工作”已经“不再有用”。在Android 6.0中引入的打盹模式和应用程序待机,从用户的角度来看,基本上使定期后台工作不可靠。
我必须实施什么?旧API和新API?或者只是最新的解决方案?
抽象地回答这个问题是不可能的。 Android 8.0或支持库中没有任何内容可以阻止您像以前一样使用AlarmManager
。