我在Android文档中读到,通过将我的Activity的launchMode属性设置为singleTop或者通过向FLAG_ACTIVITY_SINGLE_TOP我的Intent 添加标志,该调用startActivity(intent)将重用单个Activity实例并在onNewIntent回调中给我Intent .我做了这两件事,每次都onNewIntent不会发射和onCreate射击.文档还说,它this.getIntent()返回首次创建时首次传递给Activity的意图.在onCreate我打电话getIntent,每一次(我创建另一个动作的意图对象,并增加一个额外的给它我得到一个新的...这额外的应该是相同的,每次如果它回到我同样的意图对象).所有这些让我相信我的活动并不像"单一顶级",我不明白为什么.
为了添加一些背景,以防我只是错过了一个必需的步骤,这里是清单中的Activity声明和我用来启动活动的代码.活动本身没有做任何值得一提的事情:
在AndroidManifest.xml中:
<activity
android:name=".ArtistActivity"
android:label="Artist"
android:launchMode="singleTop">
</activity>
Run Code Online (Sandbox Code Playgroud)
在我的通话活动中:
Intent i = new Intent();
i.putExtra(EXTRA_KEY_ARTIST, id);
i.setClass(this, ArtistActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
Run Code Online (Sandbox Code Playgroud) java android android-manifest android-intent android-activity
我有一个前台服务,只要用户登录到应用程序,就会保持与服务器的连接.这样即使用户按Home键将应用程序发送到后台,连接仍然保持活动并且可以直接从服务器接收消息.
该应用程序有许多活动,当它们被发送到后台时,其中任何活动都可以是活动的.
我想允许用户单击通知以恢复当前活动.我了解如何恢复特定活动,但想知道是否有办法恢复用户所在的最后一个活动?当然我可以跟踪最后一个,然后从Notification回调中调用它,但是认为在任务级别可能有办法?
感谢您提供的任何建议.