我需要上传一个从本地数据库的数据记录到服务器,其中还包括一个视频文件,这可能是约30MB的大小。上面的上传发生在网络可用时,即使应用程序被终止也是如此。现在为了检测网络变化,在Android N和更高版本中,CONNECTIVITY_CHANGE和CONNECTIVITY_ACTION已被弃用,因此广播接收器没有用处。此外,在API28 (Pie)中也不推荐使用CONNECTIVITY_ACTION。
许多答案建议使用JobSchedular来完成这类任务,但它对于较小的上传是有用的。
参考:Detect CONNECTIVITY CHANGE in Android 7 and above when app is killed/in background
WorkManager https://developer.android.com/topic/libraries/architecture/workmanager.html
那么,当app被终止时,如何检测Pie(API 28)中的网络变化,并执行上述上传任务。
发布于 2019-04-03 23:03:42
JobScheduler或WorkManager的超时时间为10分钟。如果上传时间超过此时间,则必须使用前台服务!
考虑到设备的资源有限,从Android 8.0开始,谷歌在管理应用程序的后台任务方面采取了一些严格的措施。对于任何长时间运行的任务,应用程序必须使用前台Service,以便用户始终知道它。
因此,在使用WorkManager或JobScheduler调度任务后,您可以启动一个前台Service,在其中您可以执行视频上传过程。(reference)
在您的Service中,您可以使用ConnectivityManager.registerNetworkCallback侦听网络连接。(reference)
https://stackoverflow.com/questions/55495881
复制相似问题