android - 奥利奥上的长网操作
问题描述
在我的 Android 应用程序中,用户可以选择在离线模式下使用该应用程序。当用户选择进入离线模式时,我会从服务器下载所有内容(甚至可能需要长达 7 分钟)以供离线使用。此后应用程序的使用取决于离线内容的下载。我正在使用一项服务来下载离线内容。但如果应用程序进入后台,该服务可能无法在 Android 8 中运行。那么下载适用于 Android 8 的离线内容的最佳方法是什么?是一个foreground service
还是JobIntentService
一个WorkManager
?
解决方案
任何由其支持的东西JobScheduler
——包括JobIntentService
和WorkManager
——都有 10 分钟的限制。您表示您的工作可能需要长达 7 分钟,这让我有些紧张。
在短期内,让您现有的服务成为前台服务,因为这将使您的代码保持工作(除了打盹模式可能带来的任何问题)。
如果你的 7 分钟下载工作真的是一系列加起来 7 分钟的小东西,你可能最终会迁移到WorkManager
. 将您的工作分成更小的部分,并使用 设置链式工作WorkManager
,因此您肯定不会超过任何这些工作块的 10 分钟限制。另外,WorkManager
允许您建立约束,说明您的工作仅应在您有 Internet 连接的情况下执行。不过,现在(2018 年 8 月下旬)WorkManager
只是,所以在至少达到最终版本之前1.0.0-alpha07
,我不会发布基于它的产品。WorkManager
1.0.0
推荐阅读
- flutter - 在flutter中过滤jsonData
- mongodb - Stitch MongoDB updateOne 不更新
- ruby-on-rails - 任何示例如何在 Rails 中使用延迟作业进行大规模更新
- mongodb - mongo 连接器中的 mongotranslate 和模式聚合
- javascript - 如何通过json服务在node中构建odata服务
- javascript - HTML5 画布 drawImage() 在 FireFox 上不起作用
- c# - C# runas 与真实用户的工作方式不同
- selenium - 从日历中选择日期
- d3.js - X 轴标签在 d3 中未正确显示
- ios - 离子 ios 构建失败背景地理定位