这是我的场景:我通过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);
这会启动活动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()
。我知道这是活动生命周期的目的,因为任务仍然存在
不幸的是,我真的需要能够检索意图中指定的参数来设置所需的信息。而且,我希望能够恢复3种不同任务中的任何一种状态。任何人都可以帮我解决这个问题吗?
顺便说一下:我通过使用android:configChanges =“keyboardHidden | orientation”和onCreate()
来避免传递onConfigurationChanged()
。 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>
提前致谢,
Steff
答案 0 :(得分:1)
如何在this.finish()
或onStop()
方法上专门杀死活动(通过致电onPause()
)?当用户点击窗口小部件的不同按钮时,这可能会产生额外的开销,但这是您可以强制每次点击调用onCreate()
的唯一方法。