当我的应用程序不在前台时,我想检测网络是否发生更改(连接\断开连接),以便可以同步用户的数据。
我尝试使用broadcast receiver
(就像在this答案中一样),但是当应用程序关闭时(在Android N
之后),不再接收广播。仅当应用程序在前台时才起作用。
为了检测后台的连接更改,我尝试将Job Scheduler
(如this答案中的内容)与.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
参数一起使用,但是我的问题是该工作重复进行(每15分钟一次),即使用户仍连接到Internet。
我的目标是在重新获得Internet连接后进行一次作业,然后停止作业,直到用户断开连接并再次连接。对于每个与Internet的连接,该作业应完成一次,然后等待直到重新连接(不再重复)。
是否可以用Job Scheduler
(或以其他任何方式)实现?
最佳答案
使用Job Scheduler可以实现吗?
答案-我不知道
您可以使用WorkManager。这是Android Jetpack的一部分。
有2个选项。
1)OneTimeWorkRequest(即您所需要的)。
2)PeriodicWorkRequest(定期执行,最短时间为15分钟,与jobScheduler相同)。
作为Jobscheduler,WorkManager仅执行10秒。
为什么WorkManager很好。下面的图像将给出答案。
文档-https://developer.android.com/topic/libraries/architecture/workmanager