【发布时间】:2012-03-28 00:52:25
【问题描述】:
我发现了一些有趣的行为,但不知道为什么或如何解决它。 该活动是一个单任务活动,这意味着 onNewIntent() 用于该活动,而该活动位于堆栈顶部。这很好用,在手机屏幕打开时。然而,一旦屏幕关闭,直到手机“唤醒”并且此时调用 onNewIntent() 时才会接收到新意图。如果 Activity 不在栈顶且手机处于睡眠状态,则启动 Activity 并调用 onCreate() 方法。
Activity 声明为:
<activity android:name=".MyActivity"
android:launchMode="singleTask"
android:alwaysRetainTaskState="true" >
Activity 也使用 FLAG_ACTIVITY_NEW_TASK 标志启动。意图是从广播接收器启动的。如果手机处于睡眠状态并且意图被广播,则活动会使用以下标志唤醒手机:
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
但是,直到手机处于堆栈顶部时唤醒时才会创建活动。现在我很困惑,不知道从哪里开始。我的活动也使用 onSaveInstanceState()。 Activity 是一个 FragmentActivity,包含一个 Fragment。
任何帮助将不胜感激!
【问题讨论】:
标签: android android-activity android-intent