在我的 Android 应用程序中,每次用户插入他们的设备时我都需要做一些工作。为此,我现在使用 BroadcastReceiver,它会在用户插入设备时启动我的 IntentService 来完成工作,并在设备拔出时停止它。
现在我正在考虑使用适用于 Android 5.0+ 的 JobScheduler,但我看到的是使用 JobScheduler,我必须通过调用
在应用程序中安排我的工作JobScheduler.schedule(JobInfo);
但这对我来说是个问题,因为我希望我的工作在用户每次将他们的设备连接到充电器时运行,即使用户不必打开我的应用程序也是如此。
出于这个原因,我认为一种方法是在用户第一次打开应用程序时安排它,然后总是强制重新安排,因为我不能相信用户每天都打开我的应用程序(由于性质我的应用程序,肯定不会发生)。
那么,对于 Android 5.0+,我应该坚持使用 BroadcastReceiver 还是使用 JobScheduler?
在使用 JobScheduler 的情况下,我是否应该只安排我的工作一次然后总是返回 true 以强制重新安排?
谢谢。
最佳答案
So, should I stick with BroadcastReceiver or use JobScheduler for Android 5.0+?
使用 JobScheduler,这可以提高您应用的性能,以及电池生命周期等系统健康状况。此外,JobScheduler 通过设备重启持续存在,并支持批处理调度,Android 系统可以通过批处理调度合并挂起的作业,从而减少电池使用。此外,您可以区分 android 版本,因此在 Lollipop 及更高版本上使用 JobScheduler,在旧版本上使用 AlarmManager。
And in the case of using JobScheduler, should I schedule my job only once and then always return true in order to force rescheduling?
现在,有两种方法可以做到这一点:
如您所料,只安排一次作业并始终在 jobFinished() 中返回 true - 这应该可以解决问题。
完成一项作业(最初由您通过调用 JobScheduler.schedule(JobInfo) 安排)后,您可以通过调用相同的作业来安排另一项作业。一旦每项工作即将完成,这将安排后续工作。
关于Android - JobScheduler 或 BroadcastReceiver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37591128/