我需要将本地数据库中的数据记录上传到服务器,其中还包括一个大约 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)中的网络变化并执行上述上传任务。
最佳答案
JobScheduler
或 WorkManager
的超时时间为 10 分钟。如果上传时间超过这个时间,那么您必须使用前台服务!
考虑到设备资源有限,从 Android 8.0 开始,Google 在管理应用的后台任务方面采取了一些严格的措施。对于任何长时间运行的任务,应用程序必须使用前台Service
,以便用户始终了解它。
因此,在使用 WorkManager
或 JobScheduler
安排任务后,您可以启动一个前台 Service
,在其中执行上传过程视频。 (reference)
并且在您的Service
中,您可以使用ConnectivityManager.registerNetworkCallback
来监听网络连接。 (reference)
关于android - 当应用程序在 Android 馅饼中被杀死时,检测网络状态并从后台上传视频数据(API 28),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55495881/