我在 Android 文档中读到,通过将我的 Activity 的 launchMode 属性设置为 singleTop 或通过将FLAG_ACTIVITY_SINGLE_TOP
标志添加到我的 Intent,该调用startActivity(intent)
将重用单个 Activity 实例并在onNewIntent
回调中给我 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);