zoukankan      html  css  js  c++  java
  • Wakelock API详解

    官方资料 

    http://developer.android.com/intl/zh-CN/reference/android/os/PowerManager.WakeLock.html

    http://developer.android.com/intl/zh-CN/reference/android/os/PowerManager.html

    http://developer.android.com/intl/zh-CN/reference/android/view/WindowManager.LayoutParams.html#FLAG_KEEP_SCREEN_ON


    示例

    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
     PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
     wl.acquire();
       ..screen will stay on during this section..
     wl.release();


    Tips

    Dim:逐渐变暗

    Bright:保持亮度


    类型

    ACQUIRE_CAUSES_WAKEUP

    持锁后唤醒屏幕,其他的类型锁不会唤醒屏幕,而只是保持屏幕常亮,Dim 或 Bright。与PARTIAL_WAKE_LOCK互斥。

    FULL_WAKE_LOCK

    在Android4.2(API 17)后被废弃,建议采用 FLAG_KEEP_SCREEN_ON代替。

    保持屏幕与键盘背光均为最大亮度,当Power键按下后,此锁会被系统释放。屏幕与CPU均关闭,与PARTIAL_WAKE_LOCK相反。

    ON_AFTER_RELEASE

    当此锁被释放时,将重置用户Activity计时器,能够让屏幕亮的更久些。但是当屏幕没有点亮时,不会唤醒屏幕,如果想这样,请使用ACQUIRE_CAUSES_WAKEUP。与PARTIAL_WAKE_LOCK互斥。

    PARTIAL_WAKE_LOCK

    持有此锁会使CPU处于运行状态,而屏幕和键盘背光将可以熄灭。如果Power键按下,屏幕会关闭,而CPU会被保持,直到此锁被释放。

    SCREEN_BRIGHT_WAKE_LOCK

    在Android3.2(API 13)后被废弃,使用 FLAG_KEEP_SCREEN_ON代替。

    持锁将保持屏幕背光为最大亮度,而键盘背光可以熄灭。按下Power键后,此锁将会被系统自动释放,释放后屏幕与CPU均关闭。

    SCREEN_DIM_WAKE_LOCK

    在Android4.2(API 17)后被废弃,使用 FLAG_KEEP_SCREEN_ON代替。

    持锁将保持屏幕背光常亮,但可以Dim,键盘背光可以熄灭。同样,在按下Power键后会被系统自动释放,CPU与屏幕均关闭。


    使用方法
    首先,使用PowerManager的newWakelock方法:

    PowerManager.WakeLock newWakeLock(int levelAndFlags, String tag)

    作用:新建一个名为tag的levelAndFlags类型的wakelock。

    参数:

    levelAndFlags:即为上边所介绍的类型;

    tag:锁的名字,每个wakelock有唯一的名字。

    例:
    PowerManager pm = (PowerManager)mContext.getSystemService(
                                              Context.POWER_SERVICE);
     PowerManager.WakeLock wl = pm.newWakeLock(
                                          PowerManager.SCREEN_DIM_WAKE_LOCK
                                          | PowerManager.ON_AFTER_RELEASE,
                                          TAG);


    新建成功后,可以使用wakelock的API接口进行操作了。


    接口操作

    void acquire()    持锁;

    void acquire(long timeout)    持锁,timeout毫秒后自动释放;

    boolean isHeld()    返回锁的状态,true为正被持锁,false为被释放或未被持锁;

    void release()    释放锁;

    void setReferenceCounted(boolean value)    设置wakelock的计数机制,默认为计数。true为计数,false为不计数。

    计数:每一个acquire必须对应一个release;

    不计数:无论有多少个acquire,一个release就可以释放。

    void setWorkSource(WorkSource ws)    设置工作域。可能有多个应用将会用到同一个wakelock,这个是用来确认这个wakelock是给哪个应用使用。如service;

    String toString()    返回当前目标的一些描述。


    关于FLAG_KEEP_SCREEN_ON

    FLAG_KEEP_SCREEN_ON

    当前窗口在显示给用户的时候,屏幕会保持常亮,Bright。

    用法:

    Window w = activity.getWindow(); // in Activity's onCreate() for instance
     w.setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
             WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
    );


  • 相关阅读:
    详解Winform多线程编程基本原理
    asp.net 文件夹和文件的创建、删除
    sql server 查询表名,存储过程,列名等
    随机输出数组中的一个数
    C# 获取Access数据库中所有表名及其列名、列类型
    Oracle 数据库小记
    Oracle11g、PLSQL、Winfrom环境搭建
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    Android开发中用到的框架、库介绍
    Android数据存储
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3143247.html
Copyright © 2011-2022 走看看