android 打开屏幕,Android打开屏幕

我制作了由AlarmManager安排活动启动的应用程序.即使屏幕关闭且设备被锁定,我也想出现.

为了达到这一目的,请设置Window标志

final Window win = getWindow();

win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED

| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);

win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON

| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON

| WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);

并尝试获取屏幕锁定

if(_lock == null)

{

PowerManager pm = (PowerManager)App.getAppContext()

.getSystemService(Context.POWER_SERVICE);

_lock = pm.newWakeLock(

PowerManager.FULL_WAKE_LOCK, "ScreenOn");

_lock.acquire();

}

_lock是PowerManager.WakeLock,它在onPause中释放

protected void onPause()

{

if(_lock != null)

{

_lock.release();

}

}

此代码在onCreate和onRestart中执行.如果尚未启动活动,则一切正常.

但是,如果它是较早启动的,则屏幕不会关闭.

> onRestart首先被调用

>然后调用onResume

> onPause立即被调用

因此该活动未启动.我的问题是在这种情况下如何打开屏幕. (我正在使用API​​ 15).

解决方法:

只需使用您的代码:

final Window win = getWindow();

win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED

| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);

仅在onCreate()中,如果其他所有活动周期方法没有执行其他操作,则将其删除.

我认为您不需要任何其他代码即可执行它.

标签:android-wake-lock,android

来源: https://codeday.me/bug/20191123/2066930.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值