我从广播接收器开始一个活动,该活动由警报(RTC_WAKEUP 类型)触发。在该活动的 onCreate 中,我添加了这些标志
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
);
问题是有时(大约 10% 的情况)屏幕无法打开。警报被正确触发(我这里是通知的声音,它也在接收器的 onReceive() 中触发。然后,如果我按下手机的电源按钮,屏幕会打开,显示我的活动,然后立即关闭。之后那个,电源按钮很好用。这发生在 android 2.3.7 上,这里是 onReceive() 方法
@Override
public void onReceive(Context context, Intent intent) {
m_Context = context;
Bundle extras = intent.getExtras();
final int id = extras.getInt("timer_id");
Intent activityIntent = new Intent(m_Context, MyActivity.class);
activityIntent.putExtra("timer_id", id);
activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
m_Context.startActivity(activityIntent);
// and now load the alarm sound and play it for the desired time
showFinishedNotification();
}
我想避免使用 PowerManager,因为它需要权限,并且标志是首选方式。
可能是什么问题?logcat 没有显示任何问题...