屏幕关闭时 Android Wakelock 不工作

标签 android service wakelock

我正在尝试为服务实现唤醒锁和 wifi 锁。关于我的场景的更多信息,例如:Wakelock implementation in a service .我在启动期间获取并在服务被销毁时释放。我想监控我的项目的电池消耗,虽然我知道这种方法不好。但是当我的手机屏幕关闭时,它无法正常工作。我启用了选项:在 sleep 期间保持 Wifi 开启。一旦我的屏幕关闭,我的服务就会停止。我正在使用代码 fragment :

PowerManager powerManager = (PowerManager)getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Lock");
if(!wakeLock.isHeld())
{
wakeLock.acquire();
}
Log.d(TAG,"Acquired Wake lock successfully");
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifiLock = wifiManager.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF , "WiFi LockTag");
if(!wifiLock.isHeld())
{
wifiLock.acquire();
}
Log.d(TAG,"Acquired Wifi lock successfully");  

//发布

try{
wifiLock.release(); 
}catch(Exception e){
e.printStackTrace();
Log.d(TAG,"Exception while releasing WakeLock :: Can be ignoredd");
}

知道为什么会这样吗?提前致谢!

最佳答案

保护屏幕不被锁定使用这个 Spinet

public static void unlockTheScreen(Context context) {
    KeyguardManager keyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); 
    KeyguardLock keyguardLock =  keyguardManager.newKeyguardLock("TAG");
    keyguardLock.disableKeyguard();     
}

在下面添加你的唤醒锁

  wakeLock = powermanager.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP ), "TAG");

关于屏幕关闭时 Android Wakelock 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13826481/

相关文章:

multithreading - 使用 javafx.concurrent 的 JavaFX 网络后台任务

android - 3.0内核中的wakelock核心代码和接口(interface)与3.7/3.8有何区别?

Android 启动/停止服务

java - 如何在 Android 中使用 SQLite 从微调器中根据选定的月份和年份从列中获取值?

android - 返回到在 Intent 中传递值的 Activity

android - MapBox queryRenderedFeatures 返回太多值

Spring:在启动时配置应初始化哪些服务 bean 的最佳方法是什么?

Android:onReceiveResult未触发

android - 有没有办法在 Android 中接收 CPU 唤醒事件?

android - 设备可以在前台服务之前休眠吗?