我的应用程序获取唤醒锁,但无法从“活动”中唤醒设备
这是我的代码:
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执行它。我没有找到任何禁止这样做的信息,我没有在日志中看到任何错误。
是否有可能以某种方式唤醒活动/应用程序而无需从服务中启动它? 如果不可能 - 它是否在某处记录?
提前致谢
答案 0 :(得分:1)
我猜你应该选择AlarmManager - 你应该在闹钟管理器上注册PendingIntent并让接收器接收警报 - 这可以保证唤醒手机。您仍然需要一个服务(WakefullIntentService)来为您管理唤醒锁。有关代码,请参阅PowerManager wakelock not waking device up from service。
顺便说一下,TimerTasks无论如何都是一种旧的做事方式 - 预定的池执行器就是你今天使用的IIRC。