当我启动服务时,每隔几秒我就会获取一些数据发送到服务器
唤醒锁
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();
但是,如果设备一小时内未触摸且处于 sleep 模式,wifi 将停止工作。这是正常行为吗?如果不是,我应该如何锁定设备直到 release()
方法被调用?
最佳答案
当设备一段时间不使用时,Android 会 hibernate 设备以优化电池性能,所以是的,这是正常行为。
首先,强烈建议您不要尝试阻止设备进入瞌睡模式,以提高设备的电池性能。您可以在 official documentation 中阅读有关打瞌睡的更多信息。 .
如果您出于某种原因有严格的要求,需要保持服务处于 Activity 状态,您可以尝试添加 REQUEST_IGNORE_BATTERY_OPTIMIZATIONS您的应用程序中的权限。但请注意,根据官方文档 here 中的以下引用,您的应用程序可能会被 Google Play 商店拒绝(如果它应该在那里发布)。 :
Note: Google Play policies prohibit apps from requesting a direct exemption from Power Management features in Android 6.0+ (Doze and App Standby) unless the core function of the app is adversely affected.
关于java - 唤醒锁和 wifiLock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41214354/