目前我的代码中有这个:
WifiManager.WifiLock wifiLock = ((WifiManager) context
.getSystemService(Context.WIFI_SERVICE))
.createWifiLock(WifiManager.WIFI_MODE_FULL, "MyWifiLock");
wifiLock.aquire();
但是我的应用程序使用“任何”类型的网络。当没有 Wifi 连接时,它会自动使用 3G 数据。有没有办法以某种方式优化此代码,使其仅在实际使用时锁定 WiFi?我能想到的唯一方法是将上面的代码更改为:
PreferenceManager
.getDefaultSharedPreferences(getContext())
.edit()
.putBoolean(PREF_WIFI_LOCK_NEEDED, true)
.apply();
并创建一些 NetworkStateReceiver 来监听 WifiManager.NETWORK_STATE_CHANGED_ACTION 和/或 ConnectivityManager.CONNECTIVITY_ACTION 广播并以某种方式获取/释放锁(并且可能将锁保存到我的应用程序的静态成员?)
有推荐的方法吗?