【发布时间】:2010-12-15 06:28:31
【问题描述】:
我在 Android 文档中读到,通过将 Activity 的 launchMode 属性设置为 singleTop 或通过将 FLAG_ACTIVITY_SINGLE_TOP 标志添加到我的 Intent,调用 startActivity(intent) 将重用单个 Activity 实例并在 @987654324 中为我提供 Intent @ 打回来。我做了这两件事,onNewIntent 永远不会触发,onCreate 每次都会触发。文档还说this.getIntent() 返回第一次创建时第一次传递给 Activity 的意图。在onCreate 我打电话给getIntent 并且我每次都得到一个新的(我在另一个活动中创建意图对象并添加一个额外的......这个额外的每次都应该是相同的,如果它向我返回了相同的意图对象)。所有这一切让我相信我的活动不像“单顶”,我不明白为什么。
为了添加一些背景以防我只是错过了一个必需的步骤,这是我在清单中的 Activity 声明以及我用来启动该 Activity 的代码。 Activity 本身在这方面没有做任何值得一提的事情:
在 AndroidManifest.xml 中:
<activity
android:name=".ArtistActivity"
android:label="Artist"
android:launchMode="singleTop">
</activity>
在我的通话活动中:
Intent i = new Intent();
i.putExtra(EXTRA_KEY_ARTIST, id);
i.setClass(this, ArtistActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
【问题讨论】:
-
查看此幻灯片。它很好地解释了launchMode:slideshare.net/RanNachmany/…
标签: java android android-activity android-intent android-manifest