Android节能相关

来源:互联网 发布:新速特软件站下载 编辑:程序博客网 时间:2024/04/25 09:59

修复Bug:

现象:节能控制当非按电源键锁屏的情况下,开启的节能不亮屏控制不成功.

分析差异:

  • 按电源键锁屏:
    • event.log: power_screen_state[0,2,0,0]
  • 自动超时锁屏:
    • event.log: power_screen_state[0,3,0,0]
  • 上述情况是event.log的打印,具体解析还得看源码或者大神指教.

猜测:

  1. 其他地方调用获取并释放常亮屏锁.
  2. 休眠锁未维护好,未奏效.

排除过程

  1. 观察打印流程中WakeLock实例的创建与释放.
  2. 观察WakeLock初始化的参数:
    1. PowerManager.SCREEN_DIM_WAKE_LOCK
    2. PowerManager.SCREEN_BRIGHT_WAKE_LOCK
    3. PowerManager.PARTIAL_WAKE_LOCK
    4. 上述参数配合一下两个参数使用:
      • PowerManager.ACQUIRE_CASES_WAKEUP
      • PowerManager.ON_AFTER_RELEASE

中间的弯路:

  • 特大耗时点:研究Android … 情况下亮屏.对比power_screen_state[0,2,0,0]与power_screen_state[0,3,0,0]的区别还未果…
  • 当时的想法:找出这两种状态下的差异,通过差异在项目中寻找解答逻辑.
  • 失败原因:对Android偏底层实现不了解.

正确解决Bug:

  • 全局搜索所有的WakeLock类的对象,将所有执行WakeLock初始化的代码中加断点,重现Bug,分析.
  • 发现在另外一个类中获取并释放了一次常亮锁导致此Bug

最后期待:

大家将自己了解的相关屏幕状态的一些情况分享一下.

0 0
原创粉丝点击