在Android API中使用Job Scheduler <21

Man*_*265 39 android android-service

我正在看Vogella的调度教程.它提到了Android的API 21中引入的Job Scheduler API.我的问题是它可以在低于21(Lollipop)但不低于Android版本3(Honeycomb)的API中实现吗?

fil*_*och 37

从现在开始(在I/O 2015之后),您还可以使用新的GcmNetworkManager.如何使用它及其工作原理在此处描述 - https://developers.google.com/cloud-messaging/network-manager

它做了很多很酷的事情,比如它通过重新启动来坚持你的任务.在Lolipop上它使用JobScheduler,在Lolipop之前它使用它自己的实现.

编辑:

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

  • 自I/O 2016起,GCMNetworkManager现在是Firebase JobDispatcher(https://github.com/firebase/firebase-jobdispatcher-android). (13认同)
  • 它与您必须关心的任何方式都与GCM无关.它不是替换作业调度程序,因为这仅适用于与Internet相关的任务,但它是一种在旧版Android上获得与网络相关的Job Scheduler的方法 (6认同)
  • 它也可以用于非互联网相关的东西吗?另外,你知道如何使用它的一个很好的样本(除了你提供的链接)? (2认同)
  • 我知道了.但即使与互联网没有任何关系,它能运行吗?例如,扫描设备上应用程序的一些内部内容? (2认同)
  • @androiddeveloper这就是调用onInitializeTasks的原因,你必须在那里重新安排你的任务.只有在更新到新的应用程序版本或重新安装时才会调用此方法.不幸的是,没有简单的方法来重新安排之前安排的所有任务,你必须自己解决这个问题. (2认同)

Gre*_*nis 16

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


iMo*_*aio 12

棒棒糖前设备的推荐方法是使用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用作面向低于5.0的Android版本(API级别21)的应用的JobScheduler兼容层.

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

有关Firebase JobDispatcher的详细信息,请参阅其文档和源代码.


Rol*_*f ツ 8

有一些方法可以在棒棒糖前运行"作业".

如前所述,您可以使用该JobSchedulerCompat库,但与默认的Lollipop API相比,此库有很大的不同:

在Lollipop上,作业会立即进行批量处理并安排在所有应用程序中.但是,该库无法访问其他应用程序数据,因此无法使用该库组合来自两个不同应用程序的作业.

您可能想要尝试的另一个选项是AlarmManagerAPI.此API可用于调度作业,但一个区别是AlarmManager除了运行作业的计时之外没有其他约束.

由于KitKat,AlarmManager API也会在未使用"精确"方法进行调度时批量处理作业.在KitKat作业未批处理之前.

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

参考文献:AlarmManager,JobSchedulerCompat


Asa*_*sad 6

根据最新的后台作业调度API,您应该使用当前在Alpha中的 WorkManager 。

WorkManager允许您安排需要保证完成的后台任务(无论是否正在执行应用程序进程)。WorkManager为API 14+设备提供了类似于JobScheduler的功能,即使那些没有Google Play服务的设备也是如此。

WorkManager是可查询的(可观察的),对工作图具有强大的支持,并具有流畅的API。

如果使用的是JobScheduler,FireBaseJobScheduler和/或AlarmManager加上BroadcastReceivers,则应考虑使用WorkManager。要了解更多信息,请参阅工作管理器