WakeLock小计

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

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

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

然后从PowerManager获取WakeLock实例。

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

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

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

wl.acquire();
// ... do work...
wl.release();
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

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"

猜你喜欢

转载自blog.csdn.net/momo_ibeike/article/details/79499036