首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奥利奥的长网络操作

奥利奥的长网络操作
EN

Stack Overflow用户
提问于 2018-08-21 11:19:03
回答 2查看 239关注 0票数 0

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-21 11:37:43

任何得到JobScheduler支持的东西--包括JobIntentServiceWorkManager --都有10分钟的限制。你表示你的工作可能需要7分钟,这让我有点紧张。

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

如果您的7分钟下载工作实际上是一系列较小的事情,加起来只有7分钟,那么您可能最终会迁移到WorkManager。将您的工作划分为较小的块,并使用WorkManager设置链式工作,因此您肯定不会超过任何这些工作块的10分钟限制。此外,WorkManager还允许您建立约束,说明只有在有Internet连接的情况下才应该执行您的工作。然而现在(2018年8月底),WorkManager只是1.0.0-alpha07,所以我不会发布基于WorkManager的产品,直到它至少达到1.0.0的最终版本。

票数 1
EN

Stack Overflow用户

发布于 2018-08-21 11:33:12

最好的方法是使用WorkManager。如文件所述:

WorkManager的目的是为了保证即使应用程序退出,系统也会运行它们,比如将应用程序数据上传到服务器,或者从服务器下载数据。

使用WorkManager优于服务的好处包括处理打瞌睡、待机、电池优化和约束执行等。

您可以安排使用WorkManager的工作人员从服务器下载应用程序的数据,一旦数据可用,就可以继续您的脱机模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51947535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档