2017-04-21 69 views
0

我有我的应用程序来执行通知,当一个给定的情况发生。Android - 通知和生命周期

目标意图是我的应用程序的主类活动。

如果我点击抽屉中的通知,并且我的应用程序已经在运行,那么会创建一个类的新实例(我可以告诉它是来自调试器的一个新类)。

当新创建的窗口出现时,它显示为我的应用程序,当我查看正在运行的任务,但是该应用程序的唯一实例。

  1. 我的Activity类的原始实例发生了什么,以及原始应用程序实例发生了什么?

  2. 我可以确定活动只有一个实例在运行吗?

感谢

+0

在清单中为你的'Activity'添加标签'android:launchMode =“singleInstance”' - ref:https://developer.android.com/guide/components/activities/tasks-and-back-stack .html –

+0

谢谢@MarkKeen – MHugh

回答

1

1)原始实例应该还是有的,但在堆栈中。你应该可以通过后退按钮来访问它。 https://developer.android.com/guide/components/activities/tasks-and-back-stack.html

2)马克基恩的答案在这里是正确的 - 使用android:launchMode =“singleInstance”为您的Android清单中的活动标记。 https://developer.android.com/guide/topics/manifest/activity-element.html

+0

谢谢@karljamoralin – MHugh

+0

在我的具体情况下,我有一个活动,当用户在通知抽屉中选择通知时,正在触发该活动。此活动对我感兴趣的活动调用StartActivity以保持单个实例。第一个活动使用intent.PutExtra()将有关通知的信息传递给第二个实例。但是,当它在OnResume()中醒来时,我的单个实例现在不能再通过Intent.Extras.GetString()访问此信息。活动新实例的最佳实践可以将数据传递给正在被唤醒的活动的单实例 – MHugh

+0

您需要在单实例活动中重写'onNewIntent(意图意图)'。演员将以“意图”形式出现。 –