1

目前我的代码中有这个:

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 广播并以某种方式获取/释放锁(并且可能将锁保存到我的应用程序的静态成员?)

有推荐的方法吗?

4

0 回答 0