android - 确保在关闭应用程序之前完成服务(无需重试)
问题描述
我是安卓新手。我正在开发一个应用程序,该服务向我的后端发出三个请求,我需要确保在关闭应用程序之前完成请求。
我阅读了有关使用START_STICKY
方法的信息onStartCommand
,但是此选项使服务重试导致重复请求,例如,当服务仅发出第一个请求时应用程序关闭:
- 运行服务...
- 提出请求 1
- 关闭APP
START_STICKY
通过配置 重试服务...- 提出请求 1(重复)
- 提出请求 2
- 提出要求 3
有没有其他方法可以确保服务在关闭前完成执行?
解决方案
好吧,您似乎希望您的任务可靠并将数据发送到服务器,但时间并不重要(正如您所说,您可以重试,所以具体时间无关紧要)
对于这一特殊要求,您将获得 Android 的最新版本WorkManager
当您将任务请求交给WorkManager
它时,它会根据工作条件(如网络可用性和电源)得到满足来运行,它确保您的任务在特定的时间间隔内完成。
根据文档以及有关的完整分步指南WorkManager
WorkManager 旨在用于可延迟的任务(即不需要立即运行)并且即使应用程序退出或设备重新启动也需要可靠地运行。
例如:将日志或分析发送到后端服务定期同步
与服务器的应用程序数据
请查看此文档并按照指南了解更多信息
推荐阅读
- mongodb - 如何按“连接”字段排序?
- python - pytesseract 无法识别二值化图像中的数字
- c - fgetc() 和 feof() 抛出大文件的段错误
- mysql - int 类型的查询错误和结果错误值:8962101012749336481
- python-import - 为什么importlib无法将模块导入两级
- javascript - 更新点击事件的 API 数据
- excel - 当我运行用户表单时,我在 VBA 中收到子脚本超出范围错误
- javascript - 如何在同一个 ui-select 字段上同时应用 filter:$select.search 和 limitTo:$select.infiniteCurrentLimit?
- java - java.lang.RuntimeException:编码时出错:java.lang.ArrayIndexOutOfBoundsException:1
- javascript - 无法打印国际字符