【发布时间】:2014-02-15 09:56:17
【问题描述】:
在获取WakeLock 和WifiLock 时,我每5 分钟向服务器发送一次latitude 和longitude,但出现错误
java.lang.UnsupportedOperationException: Exceeded maximum number of wifi locks
at android.net.wifi.WifiManager$WifiLock.acquire(WifiManager.java:1622)
sn-p的代码是,
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;
}
}
}
没有得到任何解决方案。请任何建议。 提前谢谢你。
【问题讨论】:
-
不确定您是否发现了这一点,但您多久调用一次获取/释放函数。无法真正帮助弄清楚发生了什么,使用您的一些主要代码来查看唤醒锁类是如何被调用的。
标签: android map wifi latitude-longitude