【发布时间】:2010-05-18 15:04:34
【问题描述】:
这是我的场景:我通过 AppWidget 启动 Activity A。 AppWidget 显示(除其他外)3 个按钮。他们每个人都有自己的意图。它们旨在通过名为 AppWidgetReceiver 的类向 Activity 提供信息。在后者中,我创建了这样的意图:
Intent i = new Intent(context, CreateNoteActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra(AppWidget.WIDGET_ITS_TRIGGER_ID, trigger_id);
i.putExtra(AppWidget.WIDGET_TITLE, title);
i.putExtra(AppWidget.WIDGET_DESCRIPTION, descr);
context.startActivity(i);
这将启动 Activity A。基于trigger_id、title 和descr,我为用户创建了某种信息菜单:
coreQuestionTitle = getIntent().getStringExtra(AppWidget.WIDGET_TITLE);
coreQuestionDescr = getIntent().getStringExtra(AppWidget.WIDGET_DESCRIPTION);
coreQuestionId = getIntent().getIntExtra(AppWidget.WIDGET_ITS_TRIGGER_ID, -1);
TextView tvCoreQuestion = (TextView) findViewById(R.id.create_note_core_question_text);
tvCoreQuestion.setText(coreQuestionTitle);
所有这些都可以正常工作。当我不通过this.finish()“关闭”活动时,就会出现问题,例如按下主页或返回按钮。当我现在单击 AppWidget 上的 OTHER 按钮时,先前打开的 Activity 将恢复而不是重新启动。 onCreate() 未被调用。相反,它直接跳转到onStart()。我知道这是 Activity 生命周期的意图,因为任务仍然存在。
不幸的是,我确实需要能够检索意图中指定的参数来设置所需的信息。此外,我希望能够恢复任何 3 个不同任务的状态。谁能帮我解决这个问题?
顺便说一句:我通过使用 android:configChanges="keyboardHidden|orientation" 和 onConfigurationChanged() 来避免传递 onCreate()。 Manifest.xml 中 Activity 的声明如下:
<activity android:name=".notes.CreateNoteActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/create_note"
android:launchMode="singleTask"
android:theme="@android:style/Theme.NoTitleBar" >
<intent-filter>
<category android:name="android.intent.category.CATEGORY_HOME" />
</intent-filter>
</activity>
提前致谢,
斯特夫
【问题讨论】:
标签: android android-activity android-intent restore