早期版本的Android 5.0 JobScheduler API?

时间:2014-10-18 15:39:31

标签: android android-5.0-lollipop

我正在构建一个Android应用程序,该应用程序利用清单广播接收器来了解设备何时插入。 我认为Android 5.0 JobScheduler API是一种更好的方法,但我有一个问题:是否可以在早期版本的Android上使用此API或类似的API? 如果不可能,那么最好的选择是什么(而不是清单广播接收器)?

6 个答案:

答案 0 :(得分:23)

另一个选择是这个库:https://github.com/evernote/android-job

如果可能,它会使用JobSchedulerGcmNetworkManager。否则它会回退到AlarmManager。它还可以正确处理AlarmManager的不同API级别。这个blog post为您提供了概述。

(PS:我是在Evernote上为这个图书馆工作的主要开发人员。这对我们的项目非常有用,这也是我想在这里分享它的原因)

答案 1 :(得分:19)

引入了{p> Firebase JobDispatcher

这将取代旧的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进行可延期的后台任务。

  • 此库向后兼容
  • 它使用JobScheduler,FirebaseJobDispatcher或AlarmManager
  • 无需依赖播放服务库。
  • 由Google推荐进行可延期的后台工作。
  • 可以使用链接,约束等功能。

https://developer.android.com/guide/background/#workmanager https://developer.android.com/topic/libraries/architecture/workmanager/