超过了最大的wifi锁定数量android

时间:2014-02-15 09:56:17

标签: android map wifi latitude-longitude

我在收到latitudelongitude时每隔5分钟向服务器发送WakeLockWifiLock,但收到错误

java.lang.UnsupportedOperationException: Exceeded maximum number of wifi locks
at android.net.wifi.WifiManager$WifiLock.acquire(WifiManager.java:1622)

代码片段是,

public class WakeLocker {
    private WakeLock wl_cpu;
    private PowerManager mPowerManager;
    private WifiLock wifiLock = null;

    @SuppressLint({ "InlinedApi", "Wakelock" })
    public void acquire(Context ctx) {
        mPowerManager = (PowerManager) ctx
                .getSystemService(Context.POWER_SERVICE);

        WifiManager wm = (WifiManager) ctx
                .getSystemService(Context.WIFI_SERVICE);
        wifiLock = wm.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF,
                "MyWifiLock");
        wifiLock.acquire();

        wl_cpu = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK
                | PowerManager.ACQUIRE_CAUSES_WAKEUP
                | PowerManager.ON_AFTER_RELEASE, "MyCpuLock");
        wl_cpu.acquire(10000);
    }

    public void release() {

        if ((wifiLock != null) || (wifiLock.isHeld() == true)) {
            wifiLock.release();
            wifiLock = null;
        }
        if ((wl_cpu != null) || (wl_cpu.isHeld() == true)) {
            wl_cpu.release();
            wl_cpu = null;
        }

    }
}

没有得到任何解决方案。请任何建议。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

我刚用try-catch包围。

答案 1 :(得分:0)

在未举行时获取wake lock。将所有wifiLock.acquire()替换为 if (!wifiLock.held()) wifiLock.acquire()

相关问题