首页 > 解决方案 > 奥利奥上的长网操作

问题描述

在我的 Android 应用程序中,用户可以选择在离线模式下使用该应用程序。当用户选择进入离线模式时,我会从服务器下载所有内容(甚至可能需要长达 7 分钟)以供离线使用。此后应用程序的使用取决于离线内容的下载。我正在使用一项服务来下载离线内容。但如果应用程序进入后台,该服务可能无法在 Android 8 中运行。那么下载适用于 Android 8 的离线内容的最佳方法是什么?是一个foreground service还是JobIntentService一个WorkManager

标签: androidandroid-serviceandroid-8.0-oreoandroid-workmanagerjobintentservice

解决方案


任何由其支持的东西JobScheduler——包括JobIntentServiceWorkManager——都有 10 分钟的限制。您表示您的工作可能需要长达 7 分钟,这让我有些紧张。

在短期内,让您现有的服务成为前台服务,因为这将使您的代码保持工作(除了打盹模式可能带来的任何问题)。

如果你的 7 分钟下载工作真的是一系列加起来 7 分钟的小东西,你可能最终会迁移到WorkManager. 将您的工作分成更小的部分,并使用 设置链式工作WorkManager,因此您肯定不会超过任何这些工作块的 10 分钟限制。另外,WorkManager允许您建立约束,说明您的工作仅应在您有 Internet 连接的情况下执行。不过,现在(2018 年 8 月下旬)WorkManager只是,所以在至少达到最终版本之前1.0.0-alpha07,我不会发布基于它的产品。WorkManager1.0.0


推荐阅读