2016-10-10 124 views
3

我正在開發一個具有前臺服務的應用程序,並試圖檢測何時有網絡更改以查看我何時可以連接並且無法連接。節能(Samsung S6)禁用時,收聽ConnectivityManager.CONNECTIVITY_ACTION廣播完美無缺。但是,當我啓用省電功能時,我可能會丟失背景數據,而廣播不再告訴我任何東西。Android電池優化

我懷疑它與打瞌睡有關,所以我試圖聽PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED,但它從來沒有被解僱。

如果我請求Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,我的問題就消失了,但Google正在從Play商店中提取應用程序以請求此操作。任何想法是什麼導致我失去網絡連接,以及我如何能夠成功地收聽它來來去去?

回答

0

用戶必須禁用電池優化。
可以啓動屏幕與用戶:

Intent intent = new Intent(); 
intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS); 
context.startActivity(intent); 

所以提示用戶禁用電池優化,並開始高於這一意圖。