其他分享
首页 > 其他分享> > android – Job Scheduler与后台服务

android – Job Scheduler与后台服务

作者:互联网

我有一个应用程序,其功能A应该每分钟在后台运行.功能A是应用程序应该连接到数据库,读取一些数据然后获取设备的当前位置并根据它们检查条件,如果条件为真,它应该向用户发送状态栏通知,以便用户点击通知,将显示应用程序的用户界面并发生一些事情.
这个后台任务应该每分钟都运行一次,无论应用程序是否被使用,关闭,终止(例如facebook或Whatsapp向我们显示通知,无论它们是否在应用程序堆栈中).
现在我已经搜索并发现Android提供Job Scheduler,后台服务,AlarmManager和处理程序.
但是我读到的越多,这些陈述对我来说就越矛盾.

>关于处理程序我已经读过它们因长时间延迟而不存在
并将在系统重启后终止.所以他们不会
适合我的任务.
>但是AlarmManager似乎是这个问题的一个很好的候选者,因为当它被允许时它们甚至在系统重启后也存在并且可以
重新运行该应用程序.但在Android Documentation那个闹钟
Manager旨在用于必须在a上运行的任务
特定时间(如闹钟).但我的任务必须运行
每一分钟.
>然后是后台服务.这更适用于在后台下载的任务,因为我已阅读并且不打算这样做
做我已解释过的事情.
> JobScheduler似乎不是为了必须永久完成的任务,而是针对满足特定约束的任务
闲置,或没有网络…所以这些(或其他如果他们
你建议使用我在第一个中解释的任务吗?
部分

解决方法:

I have an app which has a feature A which should run in background every minute.

由于Doze模式(以及可能的应用程序待机状态,取决于应用程序的其余部分),数以亿计的Android设备(运行Android 6.0及更高版本的设备)不会发生这种情况.

But AlarmManager seems to be a good candidate for the problem because when permitted they exist even after system reboot

不,他们没有.您需要重新安排重启后使用AlarmManager计划的所有警报.

the Alarm Manager is intended to be used for tasks that have to be run at a specific time

AlarmManager支持重复选项.

This is more for tasks like downloading in the background as I have read and not intended for doing something I have explained.

对于您最终使用的解决方案,服务将是必不可少的.

JobScheduler seems not to be for a task that has to be done in permanently, but for tasks that fulfill a specific constraint like idle, or no network

与AlarmManager一样,JobScheduler支持重复作业.

So which of these (or other ones if they exist) do you recommend to use for the task I explained in the first part

不使用它们,因为一旦设备进入打盹模式,您将无法在Android 6.0上每分钟运行一次,这将在屏幕关闭后一小时内完成.相反,重新设计应用程序只需要每天几次背景工作,或者不打扰编写应用程序.

标签:android-handler,android,background-process,alarmmanager,android-jobscheduler
来源: https://codeday.me/bug/20190930/1835075.html