【问题标题】:Android WifiLock not working?Android WifiLock 不工作?
【发布时间】:2013-01-30 16:18:59
【问题描述】:

我需要每隔 x 分钟通过 WiFi 和 HTTP 从本地网络上的服务器提取数据。服务在后台运行,我使用 AlarmManager 来触发查询。 Wifi 睡眠政策在设备上设置为“从不”。

问题是,设备在屏幕关闭时进入睡眠状态并且wifi锁似乎没有正确重新连接wifi,因此查询失败。

知道这里有什么问题吗?

执行

   {...}

    wakeLockUtil.lock();

    //wait for wifi to connect (no idea if this is useful)
    Thread.sleep(3000);

    doQuery();

    wakeLockUtil.unlock();

   {...}

唤醒锁

public WakeLockUtil(Context context) {

    wifiLock = ((WifiManager) context.getSystemService(Context.WIFI_SERVICE)).createWifiLock(WifiManager.WIFI_MODE_FULL,
            "PeriodUpdateWifiLock");
    wakeLock = ((PowerManager) context.getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
            "PeriodUpdateWakeLock");

}

public void lock() {
    System.out.println("WakeLockUtil.lock()");
    try {
        wakeLock.acquire();
        wifiLock.acquire();
    } catch (Exception e) {
        Log.e(this.getClass().getSimpleName(), "Error getting Lock: " + e.getMessage());
    }

}

public void unlock() {
    System.out.println("WakeLockUtil.unlock()");
    if (wakeLock.isHeld())
        wakeLock.release();
    if (wifiLock.isHeld())
        wifiLock.release();
}

【问题讨论】:

标签: android wakelock


【解决方案1】:

我在某些设备上看到了 PARTIAL_WAKE_LOCK 和 WifiLock:WIFI_MODE_FULL_HIGH_PERF 在屏幕关闭时无法完全工作的问题。很烦人。到目前为止,我唯一的解决方案是使用SCREEN_DIM_WAKE_LOCK

【讨论】:

  • 这在我的用例中不起作用,但无论如何感谢您的提示:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-01
  • 1970-01-01
  • 2011-10-11
  • 2012-11-06
  • 1970-01-01
  • 2015-10-06
  • 2021-12-07
相关资源
最近更新 更多