PARTIAL_WAKE_LOCK不起作用

时间:2016-07-15 13:21:32

标签: android android-wake-lock android-powermanager

我创建了一个目标API 15(ICS)的新项目,其中包含空的Activity。我添加了显示权限:

<uses-permission android:name="android.permission.WAKE_LOCK" />

我将代码添加到onCreate()

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        PowerManager pm = (PowerManager) getSystemService(getApplicationContext().POWER_SERVICE);
        PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Tag");
        wl.acquire();

        WindowManager.LayoutParams params = getWindow().getAttributes();
        params.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
        params.screenBrightness = 0;
        getWindow().setAttributes(params);
    }

但设备没有任何反应。根据{{​​3}}我预计屏幕会立即关闭。那么,我做错了什么还是不行?

修改

我尝试了Ashish Ranjan建议在获取WakeLock后手动设置screenBrightness,但这也不起作用。

2 个答案:

答案 0 :(得分:1)

根据Android documentation,使用PARTIAL_WAKE_LOCK不会关闭屏幕。但是当WakeLock中的此模式处于活动状态时,它将允许屏幕关闭。

因此,设备屏幕不会立即关闭,您必须等待屏幕超时(这取决于设备显示设置中设置的时间),但是CPU将继续运行。

  

PARTIAL_WAKE_LOCK

     

唤醒锁定级别:确保CPU正在运行;屏幕和键盘背光将被允许熄灭。

     

如果用户按下电源按钮,屏幕将关闭,但CPU将保持打开状态,直到所有部分唤醒锁定都被释放。

要关闭屏幕,您必须像这样更改Window LayoutParams:

WindowManager.LayoutParams params = getWindow().getAttributes();
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);

答案 1 :(得分:0)

我想你忘了加上这个:

 wl.release();