android - 在 Service 、Alarm Manager 和 Job Scheduler 中哪个概念最好使用
问题描述
在 Android 5.0 之后,使用 android 服务有一些限制(在应用程序强制关闭时执行后台操作)。我想在应用程序强制关闭后执行一些操作。
在那种情况下,我应该使用作业调度程序来执行该任务 还是有任何其他方式来启动服务(在 android 5.0 之后,有时应用程序在 android 6.0 中启动服务时崩溃)
有正当理由发表您的意见,谢谢
解决方案
为您的工作选择正确的解决方案
工作可以推迟,还是需要立即进行?
例如,如果您需要从网络中获取一些数据以响应用户单击按钮,则必须立即完成这项工作。但是,如果您想将日志上传到服务器,则可以推迟这项工作,而不会影响您的应用程序的性能或用户期望。
工作是否取决于系统条件?
您可能希望您的作业仅在设备满足某些条件时运行,例如已连接到电源、具有 Internet 连接等。例如,您的应用可能需要定期压缩其存储的数据。为避免影响用户,您希望仅在设备充电和空闲时执行此作业。
作业是否需要在精确的时间运行?
日历应用程序可以让用户在特定时间为事件设置提醒。用户期望在正确的时间看到提醒通知。在其他情况下,应用程序可能不关心作业何时运行。该应用程序可能具有一般要求——例如,“作业 A 必须首先运行,然后是作业 B,然后是作业 C”——但它并不要求作业在特定时间运行。
阅读更多内容,请参阅为您的工作选择正确的解决方案
推荐阅读
- swift - 如何使用 DateFormatter() 格式化日期
- javascript - 图像仅在画布 Fabric JS 上选择时出现
- php - 有没有办法在循环中获取 $_POST 变量?
- javascript - 如何在 WebGrid 中查找单个复选框的选中状态
- css - 如何为不同的图像尺寸自动隐藏图像底部的固定尺寸
- android - 为什么我的 Flutter 应用在退出时会下拉到屏幕底部?
- python-3.x - 错误:只有整数、切片 (`:`)、省略号 (`...`)、numpy.newaxis (`None`) 和整数或布尔数组是有效索引
- azure - Azure 活动目录是否容易受到 DoS 或 DDOS 攻击
- javascript - 覆盖 Vue 的 mixin 方法
- django - 如何在单个 django 视图中组合两个 ModelForm