「已注销」 2017-08-11 05:05 采纳率: 0%
浏览 2244

如何在Activity打开但屏幕已关闭的情况下,让此Activity再次打开屏幕并显示自己?

比如,我有一个Activity在收到消息的时候必须点亮屏幕并显示给用户看。
我们都知道在onCreate里使用

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
                | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

以上代码可以做到在手机锁屏时点亮屏幕并弹出你的Activity,但是此段代码不能保证你的Activity在已经打开的情况下,然后用户锁屏,然后此Activity收到事件要再次打开屏幕时仍然好用。

就是说,你的Activity打开了,然后用户关闭屏幕,此时你的Activity执行onStop了,但是并没有退出,然后你的Activity收到消息要点亮屏幕并显示自己(在锁屏之上),此种场景就无法用上面的代码实现。

用以下代码可以实现开屏并显示,但是里面用的东西已经是在API17时就标记为作废了。且需要额外申请android.permission.WAKE_LOCK权限。

 PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
        mWakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "VideoChat");
        mWakeLock.acquire();

我的最小API是18,目标API是25,如何用没有作废标记的代码实现开屏显示呢?

我再说清楚点,就是我有个Activity A,它的launchMode是singleTask,也就是用Intent开启它时始终只保持一个实例,每次我的系统收到某个事件后,就用Intent开启这个Activity,那么这个Activity没有启动自然好说,用最前面的代码可以让他启动时点亮屏幕并在锁屏之上显示,但是如果用户在使用手机的过程中,自己手动打开了这个Activity,或者哪怕是我的系统将此Activity打开,此时是在屏幕已经点亮的情况下开的Activity,用户可以在这个Activity打开的状态下直接关闭屏幕,那么这个Activity会执行onStop但是并没有onDestroy退出,那么此时,屏幕是关闭的,如果我的系统再收到通知,又要通过Intent开启此Activity时,如果不使用上面的被标记为作废的PowerManager的方法,就没法点亮屏幕并显示给用户,即便在onStart里使用getWindow().addFlags也无济于事,所以我的问题就是有没有不被标记为作废的代码能实现以上开屏显示的要求?

我还试过在onStart里使用getWindow().addFlags,在onStop中使用getWindow().clearFlags,这种方法有时可以点亮屏幕,有时不行。好像跟onStart和onStop中执行的其他代码的多少有关。

  • 写回答

2条回答 默认 最新

  • jfwqrzy 2017-08-11 07:22
    关注

    我也没做过,,,不过我想了一下,是不是类似ofo的app那种?骑行页面保持显示 就算屏幕熄了 当你再次点亮屏幕 当前的页面仍然显示?这个的思路 会不会是保活?使用服务广播之类 让当前页面尽可能不被销毁 就算销毁了 也要保存好当前状态监听到屏幕亮了再次创建?

    评论

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿