根据文档,Google仅允许以下内容作为后台进程,
还
一个应用程序位于前台时,它可以创建并运行两个应用程序 免费提供前台和后台服务。当应用进入 背景,它有一个几分钟的窗口,它仍然在 允许创建和使用服务。在该窗口的结尾,该应用 被认为是空闲的。此时,系统会停止该应用的 后台服务,就像该应用已调用了“服务” Service.stopSelf()方法。
在某些情况下,后台应用会放置在临时 进入白名单几分钟。当应用程序进入白名单时,它会 可以不受限制地启动服务及其后台服务 被允许运行。当应用程序被列入白名单时 处理用户可见的任务,例如:
我的应用程序(targetSdkVersion 26),需要在后台下载一个大文件(〜100 MB)(状态,应用程序甚至不在最近的列表中)。我已经创建了一个Service
来实现此目的,但是由于我要从最近删除我的应用程序,因此下载将停止。因此, Google确实意味着,应用程序无法在后台使用targetSdkVersion 26执行下载过程吗?
答案 0 :(得分:2)
Google确实意味着,应用无法在中执行下载过程 targetSdkVersion 26的背景?
它对在后台执行服务施加了限制。但是,您仍然可以在后台完成您的工作。
方法1:
如果下载所需数据的时间确实很长,则可以使用新的WorkManager
API。
如文档所述,WorkManager用于需要保证即使应用程序退出时系统也将运行它们的任务,例如将应用程序数据上传到服务器。它不适用于进程中的后台工作,如果应用程序进程消失,该后台工作可以安全终止。
您可以schedule a work进行一次或定期工作。此外,它还允许您指定约束,例如所需的Internet连接。对于可延迟或异步任务,应首选此方法。
方法2:创建ForegroundService
或者,您可以立即启动ForegroundService,并在终止服务之前执行任务。在某些情况下,您可能需要请求部分唤醒锁定。
您也可以在此SO上查看我的答案以了解更多详细信息。