在Android API中使用Job Scheduler <21

我在看Vogella的日程安排教程。 它提到了Android的API 21中引入的Job Scheduler API。 我的问题是,它可以在低于21(棒棒糖),但不低于Android版本3(蜂窝)的API中实现?

Solutions Collecting From Web of "在Android API中使用Job Scheduler <21"

从现在开始(I / O 2015之后),您也可以使用新的GcmNetworkManager。 如何使用它,以及如何使用它 – https://developers.google.com/cloud-messaging/network-manager

它做了很多很酷的东西,像它坚持你的任务通过重新启动。 在Lolipop它使用JobScheduler,在前Lolipop它使用它自己的实现。

编辑:

关于如何使用它的示例代码: https : //github.com/jacktech24/gcmnetworkmanager-android-example

Evernote有一个非常好的强大的作业调度程序库 。 它使用每个SDK级别上最好的方法,并为您提供一个非常干净优雅的界面来安排和运行作业。

推荐的棒棒糖设备的方法是使用https://github.com/firebase/firebase-jobdispatcher-android#user-content-firebase-jobdispatcher-

阅读https://developer.android.com/topic/performance/scheduling.html#fjd

Firebase JobDispatcher是一个开源库,提供与Android平台中的JobScheduler类似的API。 Firebase JobDispatcher充当适用于Android版本低于5.0(API级别21)的应用程序的JobScheduler兼容性层。

Firebase JobDispatcher支持使用Google Play服务作为调度(运行)作业的实现,但该库还允许您定义和使用其他实现:例如,您可能决定使用JobScheduler或编写自己的自定义代码。 由于这种多function性,如果您的应用的Android版本低于5.0(API级别21),我们build议您使用此Firebase JobDispatcher。

有关Firebase JobDispatcher的更多信息,请参阅其文档和源代码。

有几种运行“工作”前棒棒糖的方法。

如上所述,您可以使用JobSchedulerCompat库,但与默认的Lollipop API相比,此库具有巨大差异:

在棒棒糖作业是批量和安排所有的应用程序一次。 但是,该库无法访问其他应用程序数据,因此无法使用库来结合来自两个不同应用程序的作业。

您可能想要尝试的另一个选项是AlarmManager API。 该API可用于调度作业,但有一点不同, AlarmManager除了运行作业的时间外没有其他限制。

由于KitKat中的AlarmManager API在未使用“精确”方法进行调度时也会对作业进行批处理。 在KitKat作业未批处理之前。

如果您的目标是同步数据,那么Sync-Adapter API可能会很有用: Sync-Adapter

参考: AlarmManager , JobSchedulerCompat

你可以看看JobSchedulerCompat库

不过,正如作者所指出的那样,JobScheduler只能从棒棒糖开始使用是有原因的,所以要注意这一点。 引用:

但是,这个库还没有经过很好的testing,所以我build议这个时候不要在生产中使用。 不能保证这不会导致电池电量耗尽或导致设备爆炸。

请参阅关于Android N预览API概述的链接。

GCMNetworkManager是Google Play服务的一部分,它提供了类似的作业调度function,兼容旧版Android。