当前位置:   article > 正文

WakeLock小计_acquire_causes_wakeup

acquire_causes_wakeup

由于手机存在休眠策略,所以停止使用一点时间后CPU可能会停止运行进入休眠状态,为了保持CPU的一直唤醒,安卓提供了WakeLock相关API,这里做个简单小结。

为了获取WakeLock,先要拿到PowerManager。

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
  • 1

然后从PowerManager获取WakeLock实例。

PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
  • 1

newWakeLock的第一个参数需要传入一个int行flags。

PowerManager.WakeLock wl=pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK|PowerManager.ON_AFTER_RELEASE,TAG);

wl.acquire();
// ... do work...
wl.release();
  • 1
  • 2
  • 3
  • 4
  • 5
PARTIAL_WAKE_LOCK
FULL_WAKE_LOCK
SCREEN_DIM_WAKE_LOCK
SCREEN_BRIGHT_WAKE_LOCK
PROXIMITY_SCREEN_OFF_WAKE_LOCK
ACQUIRE_CAUSES_WAKEUP
ON_AFTER_RELEASE
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

PARTIAL_WAKE_LOCK:保证CPU保持高性能运行,而屏幕和键盘背光(也可能是触摸按键的背光)关闭。一般情况下都会使用这个WakeLock。

ACQUIRE_CAUSES_WAKEUP:这个WakeLock除了会使CPU高性能运行外还会导致屏幕亮起,即使屏幕原先处于关闭的状态下。

ON_AFTER_RELEASE:如果释放WakeLock的时候屏幕处于亮着的状态,则在释放WakeLock之后让屏幕再保持亮一小会。如果释放WakeLock的时候屏幕本身就没亮,则不会有动作。

API17被弃用的WakeLock:保持屏幕长亮

    SCREEN_DIM_WAKE_LOCK:保证屏幕亮起,但是亮度可能比较低。同时键盘背光也可以不亮。

    SCREEN_BRIGHT_WAKE_LOCK :保证屏幕全亮,同时键盘背光也亮。

    FULL_WAKE_LOCK:表现和SCREEN_BRIGHT_WAKE_LOCK 类似,但是区别在于这个等级的WakeLock使用的是最高亮度!

推荐是用WindowFlagWindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON。使用方法是:

    在Activity中: getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    在布局中添加这个属性:android:keepScreenOn="true"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/301747
推荐阅读
相关标签
  

闽ICP备14008679号