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