阻止打开多个android应用程序实例

阻止打开多个android应用程序实例,android,android-activity,Android,Android Activity,我已经为我的问题做了相当多的搜索,但找不到任何解决我确切问题的方法 我有一个应用程序,有3个连续的活动。主要活动(启动时),第二个活动(大部分肉和内脏都生活在这里),最后一个活动或多或少是第二个活动的总结页面 我偶尔会遇到这个问题,如果我在后台运行第二个活动(关闭手机屏幕,或者直接点击主页),然后点击启动图标返回应用程序,它会创建一个新实例,而不是返回到后台运行的第二个活动。我找不到任何押韵或理由来解释为什么它有时会发生,而其他人却不会(通常不会)。大多数时候,我会回到我的第二项活动,世界上一切

我已经为我的问题做了相当多的搜索,但找不到任何解决我确切问题的方法

我有一个应用程序,有3个连续的活动。主要活动(启动时),第二个活动(大部分肉和内脏都生活在这里),最后一个活动或多或少是第二个活动的总结页面

我偶尔会遇到这个问题,如果我在后台运行第二个活动(关闭手机屏幕,或者直接点击主页),然后点击启动图标返回应用程序,它会创建一个新实例,而不是返回到后台运行的第二个活动。我找不到任何押韵或理由来解释为什么它有时会发生,而其他人却不会(通常不会)。大多数时候,我会回到我的第二项活动,世界上一切都很好,但有时,它会引发另一个例子


是否仍要检查实例是否正在运行,如果有,则始终返回到该实例?

当您点击主页或屏幕关闭时,应用程序将自动进入onStop()阶段。根据可用内存的不同,该应用程序可能会被Android操作系统杀死。真的没有办法阻止操作系统杀死一个不再出现在前台的应用程序——这是一个Android操作系统设计。如果您没有打开很多应用程序,那么这种情况很可能不会发生


如果应用程序的第一个实例仍然存在,并且您启动了该应用程序,它将自动检索该实例。Android被设计成在第一个应用程序仍在运行时,永远不会创建同一应用程序的第二个实例。因此,无法检查实例是否正在运行。您可以使用onDestroy()中的日志记录来查看应用程序何时终止。但是,Android并不总是调用onDestroy(),可能只是简单地终止应用程序。

当你说“Android应用程序的多个实例”时,我们是在谈论活动吗?你的应用程序只能有一个实例。要回答您的问题,您首先需要了解活动生命周期以及用于控制如何在导航堆栈上管理活动的标志。您还应该了解,一旦某个活动进入后台(在onPause()之后),下一次该活动进入前台时,它可能是该活动的一个新实例,onCreate()被调用。顺便说一句,我应该补充一点,你把你的活动放在后台,当你再次点击图标时,你的整个应用程序可能会被关闭并重新启动。接下来会发生什么取决于你们,我想这是新的活动实例。我上面提到的第二个活动是播放音乐。所以我知道它永远不会消失,因为即使我的手机屏幕关闭,它也在播放音乐。正如我之前所说,大多数情况下,当我在唤醒手机或从另一个应用程序返回后点击我的应用程序图标时,它会带我进入第二个播放音乐的活动。但有时,它会把我带回到第一个活动,如果我再去第二个活动,这是一个新的例子。我只是想避免这种情况发生,并让我在点击图标时总是进入第二个活动。在某些情况下,您也可能无法进入顶部()。通常,onPause()与onResume()一起使用。除非发生诸如突然断电或某个地方的系统崩溃之类的灾难,否则这两个都是有保证的。@Simon正如我在回复您的评论时所说的,第二个活动仍在进行中,因为它正在播放音乐,所以我认为它从来没有击中桌面()…您正在使用服务吗?在这种情况下,服务可以继续运行。服务与活动不同。doh!是的,音乐播放器正在服务中,从第2个活动开始静态调用。有没有办法防止这种活动永远消失?不幸的是没有。。。服务的最基本要求是即使在其主机活动不再存在的情况下也要保持运行。