ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android – Job Scheduler与后台服务

2019-09-30 06:36:52  阅读:239  来源: 互联网

标签:android-handler android background-process alarmmanager android-jobscheduler


我有一个应用程序,其功能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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有