我在收到latitude
和longitude
时每隔5分钟向服务器发送WakeLock
和WifiLock
,但收到错误
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;
}
}
}
没有得到任何解决方案。请任何建议。 提前谢谢。
答案 0 :(得分:0)
我刚用try-catch包围。
答案 1 :(得分:0)
在未举行时获取wake lock
。将所有wifiLock.acquire()
替换为
if (!wifiLock.held()) wifiLock.acquire()