早期版本上的Android 5.0作业调度器API?

早期版本上的Android 5.0作业调度器API?,android,android-5.0-lollipop,Android,Android 5.0 Lollipop,我正在构建一个Android应用程序,它利用清单广播接收器来知道设备何时插入。 我认为Android 5.0 JobScheduler API是一种更好的方法,但我有一个问题:是否可以在Android的早期版本上使用此API或类似的API? 如果不可能,那么最好的选择是什么(而不是清单广播接收器) 我认为Android 5.0 JobScheduler API将是一种更好的方法 那要看“这”是什么了。如果你不打算利用这些信息做些什么,那么仅仅知道设备何时被插入是毫无意义的,我们也不知道你在想什么

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

我认为Android 5.0 JobScheduler API将是一种更好的方法

那要看“这”是什么了。如果你不打算利用这些信息做些什么,那么仅仅知道设备何时被插入是毫无意义的,我们也不知道你在想什么

请记住,
JobScheduler
不一定能让您控制设备的插入时间。相反,它利用这一事实,加上你的
JobInfo
和其他环境因素,来决定何时给予你控制权

是否可以在早期版本的Android上使用此API或类似的API

目前没有Android SDK提供的
JobScheduler
后台端口。虽然有人可能会在某个时候编写一个后端口,但我目前也不知道有一个是开源的

如果不可能,那么最好的选择是什么(而不是清单广播接收器)

同样,这取决于“这”到底是什么。例如,如果您试图说“我希望每隔一段时间获得控制权,但前提是设备已插入”,则可以使用
AlarmManager
,然后在继续工作之前检查设备是否已插入。

更新:

下面介绍了如何替换

更新:

下面介绍了如何替换


更新:

推出了在线服务7.5

这是作业调度器API的最接近的后端口


Github上的Evant用户正在创建


发布时,它还未准备好生产,但值得一提的是另一个选项是此库:

如果可能,它使用
JobScheduler
GcmNetworkManager
。否则,它将返回到
报警管理器
。它还可以使用
AlarmManager
正确处理不同的API级别。这将为您提供一个概述

(注:我是Evernote这个库的主要开发人员。它对我们的项目很有用,这就是为什么我也想在这里分享它)

介绍


这将替换旧的GCM Network Manager库。

遇到此库,没有尝试,但看起来很适合您的需要:


Evernote android job可能是一个更好的解决方案:)

重要更新

从现在起,每个人都应该使用WorkManager来执行可延迟的后台任务

  • 这个库是向后兼容的
  • 它使用JobScheduler、FirebaseJobDispatcher或AlarmManager
  • 不需要依赖于play服务库
  • 谷歌推荐的可推迟的背景工作
  • 可以使用链接、约束等功能

谢谢!我只是想在手机充电时做些工作,以减少电池消耗。这项工作是在实验室里完成的IntentService@user3194230:对于
JobScheduler
,这听起来确实是一个很好的用例(尽管为此您需要切换到
JobService
)。不过,你也可以在这段时间内——我写答案的时候已经忘了那个广播节目了。是的。现在我正在使用一个清单广播接收器,它监听连接了动作的广播。在我的运行安卓4.4.4的Nexus5上,它可以正常工作,但在我朋友的三星GalaxyS(运行安卓2.3.6)上,我没有让它工作。我试过收听“电池更换”广播,它在我的手机和我朋友的手机中都能正常工作,但该广播要求我的应用程序始终运行time@user3194230:“我没有让它在我朋友的三星Galaxy s上工作”——嗯,当时广播是可用的,所以三星一定是搞砸了-(“此广播要求我的应用程序始终运行”--是的,因为如果他们必须在每次电池电量下降时分叉一系列进程,这对电池是有害的。因此,你必须有一个运行的进程。谢谢。因此,你必须有一个运行的进程。实现它的最佳方式是什么?可能使用AlarmManager?但随后谷歌推出了WorkManag对于可延迟的任务是推荐的方法,请参阅我的答案伟大的工作人员,我喜欢这个库。不幸的是,没有太多关于它的文档,我经常发现自己不确定作业的配置。实际上,你不应该太在意配置。Github上的文档解释了所有需要的内容。创建实际作业也不难。创建作业类并与生成器一起安排,生成器提供了一些易于使用的参数。建议使用可延迟任务的WorkManager,请参阅我的回答。我尝试了GCM&Firebase,发现该作业在数小时内未被解雇。建议使用可延迟任务的WorkManagerd路,请看我的答案