wakeLock和wifiLock

时间:2016-12-19 00:33:07

标签: java android

当我开始每隔几秒钟向服务器发送一些数据的服务时,我获得了

唤醒锁定

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
    wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakelockTag");
    wakeLock.acquire();

和wifiLock

WifiManager wMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    wifiLock = wMgr.createWifiLock(WifiManager.WIFI_MODE_FULL, "MyWifiLock");
    wifiLock.acquire();

但如果设备未触摸一小时且处于睡眠模式,则wifi停止工作。这是正常行为,如果没有,我应该怎样做才能锁定设备,直到调用release()方法?

1 个答案:

答案 0 :(得分:3)

当设备闲置一段时间以优化电池性能时,Android会关闭设备,所以这是正常行为。

首先,强烈建议您不要试图阻止设备打瞌睡模式,以提高设备的电池性能。您可以在official documentation中了解有关打瞌睡的更多信息。

如果您出于某种原因严格要求保持服务的有效性,则可以尝试在应用中添加REQUEST_IGNORE_BATTERY_OPTIMIZATIONS权限。但请注意,根据官方文档here中的以下引文,您的应用可能会被Google Play商店拒绝(如果它应该在那里发布):

  

注意:除非应用程序的核心功能受到不利影响,否则Google Play政策会禁止应用程序直接豁免Android 6.0+(Doze和App Standby)中的电源管理功能。