android pie (API 28) 应用程序被杀死时检测网络状态并从后台上传视频数据

Detect network state and Upload video data from background when app is killed in android pie (API 28)

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

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

引用了这个:

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

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

JobSchedulerWorkManager 有 10 分钟的超时。如果上传时间比这长,那么你必须使用前台服务!

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

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

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