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