我正在构建一个Android应用程序,该应用程序利用清单广播接收器来了解设备何时插入。 我认为Android 5.0 JobScheduler API是一种更好的方法,但我有一个问题:是否可以在早期版本的Android上使用此API或类似的API? 如果不可能,那么最好的选择是什么(而不是清单广播接收器)?
答案 0 :(得分:23)
另一个选择是这个库:https://github.com/evernote/android-job
如果可能,它会使用JobScheduler
和GcmNetworkManager
。否则它会回退到AlarmManager
。它还可以正确处理AlarmManager
的不同API级别。这个blog post为您提供了概述。
(PS:我是在Evernote上为这个图书馆工作的主要开发人员。这对我们的项目非常有用,这也是我想在这里分享它的原因)
答案 1 :(得分:19)
这将取代旧的GCM网络管理器库。
答案 2 :(得分:18)
更新
引入了WorkManager以取代以下内容。
更新
引入了Firebase JobDispatcher以取代以下内容。
更新
在Play Services 7.5中引入了 GCM Network Manager 。
这是JobSchedulers API的最后端口的最接近的近似值。
Github上的Evant用户正在创建Compat version of the JobScheduler API。
在发布时,它不是生产就绪,但值得一提
答案 3 :(得分:9)
我认为Android 5.0 JobScheduler API是一种更好的方法
那么,这取决于“这个”是什么。简单地知道设备何时插入是没有意义的,除非你打算对这些信息做些什么,而且我们不知道你的想法。
请记住,JobScheduler
并不一定能让您控制设备插入的时间。相反,它会使用该事实以及您的JobInfo
和其他环境因素来确定何时给您控制。
是否可以在早期版本的Android上使用此API或类似API?
此时Android SDK没有提供JobScheduler
的后端。虽然有人可能会在某个时候写一个反向端口,但我现在还不知道有一个可用的开源。
如果不可能,那么最好的选择是什么(而不是明确的广播接收器)?
同样,这取决于“这个”到底是什么。例如,如果您试图说“我希望每隔一段时间获得一次控制权,但只有设备插入”,您可以使用AlarmManager
,然后在继续之前检查设备是否已插入与你的工作。
答案 4 :(得分:1)
来到这个图书馆,没有尝试过,但看起来很适合你想要的东西: https://github.com/airk000/Trigger
Evernote android-job可能是一个更好的解决方案:)
答案 5 :(得分:1)
重要更新
从现在开始,每个人都应使用WorkManager进行可延期的后台任务。
https://developer.android.com/guide/background/#workmanager https://developer.android.com/topic/libraries/architecture/workmanager/