android - 当应用程序在 Android 馅饼中被杀死时,检测网络状态并从后台上传视频数据(API 28)

标签 android file-upload broadcastreceiver android-jobscheduler android-workmanager

我需要将本地数据库中的数据记录上传到服务器,其中还包括一个大约 30 MB 大小的视频文件。 当网络可用时,即使应用程序被终止,也会发生上述上传。 现在,为了检测网络变化,在 Android N 及更高版本中,CONNECTIVITY_CHANGE 和 CONNECTIVITY_ACTION 已弃用,因此广播接收器没有用。 此外,CONNECTIVITY_ACTION 在 API 28 (Pie) 中已弃用。

许多答案建议使用 JobSchedular 来执行此类任务,但它对于较小的上传很有用。

引用了这个:Detect CONNECTIVITY CHANGE in Android 7 and above when app is killed/in background

工作管理器 https://developer.android.com/topic/libraries/architecture/workmanager.html

那么当应用程序被终止时,如何检测 Pie(API 28)中的网络变化并执行上述上传任务。

最佳答案

JobSchedulerWorkManager 的超时时间为 10 分钟。如果上传时间超过这个时间,那么您必须使用前台服务!

考虑到设备资源有限,从 Android 8.0 开始,Google 在管理应用的后台任务方面采取了一些严格的措施。对于任何长时间运行的任务,应用程序必须使用前台Service,以便用户始终了解它。

因此,在使用 WorkManagerJobScheduler 安排任务后,您可以启动一个前台 Service,在其中执行上传过程视频。 (reference)

并且在您的Service中,您可以使用ConnectivityManager.registerNetworkCallback来监听网络连接。 (reference)

关于android - 当应用程序在 Android 馅饼中被杀死时,检测网络状态并从后台上传视频数据(API 28),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55495881/

相关文章:

android - 如何在 ionic 中查找设备操作系统和版本

android - 如何从应用程序类中注销广播接收器?

android - 将广播接收器包装到流中(协程)

android - FILE_PROVIDER_PATHS 不正确

android - Soundboard App 强制关闭,我不明白为什么

android - 如何在android中后台运行程序?

jsf - 检查是否在 p :fileUpload 中选择了文件

java - 为什么有很多框架支持多次上传,但没有一个支持多次下载?

javascript - 可以设置输入类型=文件的文本框的高度吗?

android - 警报管理器和广播接收器不停止