Android设备无法从活动推迟的操作中唤醒(FLAG_TURN_SCREEN_ON设置但没有任何反应)

时间:2014-07-28 02:00:20

标签: android android-activity timer android-wake-lock wakeup

我的应用程序获取唤醒锁,但无法从“活动”中唤醒设备

这是我的代码:

public void onCreate(){
    super.onCreate();
    //acquire wakelock logic here
    new Timer().schedule(new TimerTask() {
        @Override
        public void run() {
            mHandler.obtainMessage().sendToTarget();
        }
    }, 30000);
.....
}
public Handler mHandler = new Handler() {
    public void handleMessage(Message msg) {
        turnScreenOn();
    }
}

private void turnScreenOn() {
    Log.i("MainActivity", "Turn screen on");
    getWindow().addFlags(
            WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
                    WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
                    WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
    );
}

在日志中,我看到turnScreenOn已执行但屏幕仍处于关闭状态。当我从onCreate()和Activity from Service执行此方法时 - 一切都很好,但我想从Activity执行它。我没有找到任何禁止这样做的信息,我没有在日志中看到任何错误。

是否有可能以某种方式唤醒活动/应用程序而无需从服务中启动它? 如果不可能 - 它是否在某处记录?

提前致谢

1 个答案:

答案 0 :(得分:1)

我猜你应该选择AlarmManager - 你应该在闹钟管理器上注册PendingIntent并让接收器接收警报 - 这可以保证唤醒手机。您仍然需要一个服务(WakefullIntentService)来为您管理唤醒锁。有关代码,请参阅PowerManager wakelock not waking device up from service

顺便说一下,TimerTasks无论如何都是一种旧的做事方式 - 预定的池执行器就是你今天使用的IIRC。