Android Oreo上的长网络操作

Android Oreo上的长网络操作,android,android-service,android-8.0-oreo,android-workmanager,jobintentservice,Android,Android Service,Android 8.0 Oreo,Android Workmanager,Jobintentservice,在我的Android应用程序中,用户可以选择在脱机模式下使用该应用程序。当用户选择进入离线模式时,我从服务器下载所有内容,离线使用可能需要7分钟。此后,应用程序的使用取决于离线内容的下载。 我正在使用服务下载脱机内容。但如果应用程序进入后台,该服务可能无法在Android 8中运行。那么,下载Android 8离线内容的最佳方法是什么?它是前台服务还是JobIntentService或WorkManager?最好的方法是使用。如文件所述: WorkManager适用于需要保证 即使应用程序退出,

在我的Android应用程序中,用户可以选择在脱机模式下使用该应用程序。当用户选择进入离线模式时,我从服务器下载所有内容,离线使用可能需要7分钟。此后,应用程序的使用取决于离线内容的下载。
我正在使用服务下载脱机内容。但如果应用程序进入后台,该服务可能无法在Android 8中运行。那么,下载Android 8离线内容的最佳方法是什么?它是前台服务还是JobIntentService或WorkManager?

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

WorkManager适用于需要保证 即使应用程序退出,系统也会运行它们,比如将应用程序数据上传到 服务器,或从服务器下载数据

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


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

JobScheduler支持的任何内容(包括JobIntentService和WorkManager)都有10分钟的限制。你表示你的工作可能需要7分钟,这让我有点紧张

在短期内,使您现有的服务成为前台服务,因为这将使您的代码能够正常工作,而不会出现打瞌睡模式可能带来的任何问题


如果您的7分钟下载工作实际上是一系列小事情,加起来只有7分钟,那么您可能最终会迁移到WorkManager。将您的工作划分为较小的部分,并与WorkManager建立链接工作,这样您就可以确定这些部分的工作不会超过10分钟的限制。另外,WorkManager允许您建立约束,即只有在您有Internet连接的情况下才能执行工作。不过,目前2018年8月底,WorkManager只有1.0.0-alpha07,所以我不会发布基于WorkManager的产品,直到它至少达到1.0.0最终版本。

但如果我使用WorkManager,工作可能不会立即执行,因为Android系统可能会将来自不同应用程序的多个工作合并在一起执行。在这种情况下,由于离线内容尚未下载,用户将被阻止使用该应用。谢谢回答。所以,你的意思是我让现有的服务成为Android 8的前台服务和Android 8下的正常服务?@ DeFooal:我会考虑把它作为所有版本的前台服务,但这取决于你。