You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何搭配PowerManager.LOCATION_MODE_NO_CHANGE参数使用WakeLock?

崩溃原因

你传入的LOCATION_MODE_NO_CHANGE不是PowerManager.newWakeLock()方法支持的合法参数,这个常量归属于LocationManager定位服务,仅用于控制设备定位模式的切换逻辑,和电源锁的功能完全无关。
当你向newWakeLock()方法传入不匹配的flag常量时,系统会直接抛出IllegalArgumentException异常,这就是你应用崩溃的直接原因。


电源锁合法参数说明

PowerManager类仅支持以下几种电源锁flag:

  • PARTIAL_WAKE_LOCK:仅保持CPU处于运行状态,屏幕和键盘背光均可关闭,是你当前场景下正确的选型
  • FULL_WAKE_LOCK:保持屏幕、键盘背光、CPU全量运行,该参数已在API 17版本废弃,若需要保持屏幕常亮推荐使用WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON参数实现
  • SCREEN_DIM_WAKE_LOCK:保持CPU运行,允许屏幕亮度降低至昏暗状态,该参数已在API 17版本废弃
  • SCREEN_BRIGHT_WAKE_LOCK:保持CPU和屏幕高亮运行,键盘背光可关闭,该参数已在API 17版本废弃

额外使用注意事项

  • 使用电源锁前需要在AndroidManifest.xml中声明权限:<uses-permission android:name="android.permission.WAKE_LOCK" />,未声明权限会触发SecurityException崩溃
  • 电源锁使用完成后必须及时调用mWakeLock.release()方法释放资源,避免长时间占用CPU导致设备异常耗电
  • 非必要场景不建议长期持有电源锁,后台定时任务类需求优先使用WorkManager、JobScheduler等系统调度组件实现,功耗控制更优

内容的提问来源于stack exchange,提问作者Faizan Ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:06:07