Android 不要为同一应用打开两次

Android 不要为同一应用打开两次,android,Android,我制作了一个制作流媒体广播的应用程序。第二次点击图标打开应用程序两次,如何防止出现这种情况?这里有一个很好的建议: * 我通常做的是为特定的共享文件添加一个检查 主活动中的首选项:如果缺少该共享首选项 然后启动单次运行活动,否则继续主运行 活动。启动单次运行活动时,创建共享 首选项,以便下次跳过它 此解决方案与您所问的问题略有不同,但应能准确给出您想要的结果 另一种可能是在androidmanifest.xml中使用android:launchMode=“singleInstance”:

我制作了一个制作流媒体广播的应用程序。第二次点击图标打开应用程序两次,如何防止出现这种情况?

这里有一个很好的建议:

*

我通常做的是为特定的共享文件添加一个检查 主活动中的首选项:如果缺少该共享首选项 然后启动单次运行活动,否则继续主运行 活动。启动单次运行活动时,创建共享 首选项,以便下次跳过它

此解决方案与您所问的问题略有不同,但应能准确给出您想要的结果

另一种可能是在androidmanifest.xml中使用android:launchMode=“singleInstance”:


IMHO…

要流式播放音乐,您应该使用一项服务,以便即使在应用程序关闭时也能继续播放音乐。此时,您的活动仅用于与服务通信。启动应用程序时,只需检查服务是否正在运行。

通常情况下,这不应该发生,如果您的活动已在运行,则如果用户重新启动,系统会将其启动。如果您的活动是由新任务中的另一个应用程序/活动启动的,或者出于某些其他原因,可能会使用意图来创建已运行活动的新实例,请查看清单中的singleInstance或singleTask模式:

至于流媒体,您应该使用一个服务(最好是绑定服务)来包含您的媒体播放器,以便它可以继续在后台播放,然后该活动只是连接到它的服务的一个客户端,该服务保留一个实例。这里已经描述了:


你的目标是在应用程序第一次启动时允许一个事件,但在第二次启动时阻止它吗?我的目标是如果应用程序已经打开,就不打开它。我相信android系统会帮你处理这个问题。换句话说,如果你的包在“当前正在运行”列表中,它会将正在运行的实例带到前台,而不是再次启动它。它不会,因为如果你第二次重新打开应用程序,我会同时听到两个程序的回声。这似乎是你实现的结果,而不是第二次打开应用程序。如果没有看到您的代码,就无法说出原因。我想回顾一下活动生命周期会有助于你解决问题。似乎流式音频要打开好几次,当我关闭应用程序时,一切都会关闭,所以你的假设似乎是合理的。