我正在开发一个具有前台服务的应用程序,并试图检测网络何时发生变化,以了解何时可以连接和不能连接。禁用省电 (Samsung S6) 后,可以完美地收听 ConnectivityManager.CONNECTIVITY_ACTION 广播。但是,当我启用省电功能时,我可能会丢失后台数据并且广播不再告诉我任何信息。
我怀疑它与打瞌睡有关,所以我尝试听 PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED 但它从未被触发。
如果我请求 Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,我的问题就会消失,但谷歌正在从 Play 商店中提取应用程序以请求这个。有什么想法导致我失去网络连接以及如何成功地收听它来来去去吗?
最佳答案
用户必须禁用电池优化。
您可以通过以下方式为用户启动屏幕:
Intent intent = new Intent();
intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
context.startActivity(intent);
因此提示用户禁用电池优化并在上面启动此 Intent 。
关于安卓电池优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39959171/