防止重复活动

时间:2010-10-22 22:33:46

标签: java android

所以,我既是Java的新手,也是创建Android应用程序的新手,但不是编程新手。我已经阅读了大多数developer.android.com网站,但我找不到这个:

我想确保某个活动同时运行不止一次。所以我们有一个像这样的任务:
活动A)TabActivity,启动
活动B)点击后打开的ListView 活动C)是媒体播放器对象的接口

现在,每当有人在C中按下后退按钮时(这很可能是因为他们要收听1小时流式传输的mp3),然后按下另一个列表项,而不是返回C,C第二次打开,正在播放两个流。当然,我只想要运行一个C实例,我希望第二次单击列表项以将C带回到前面。这对通知意图也很有用。

我一直在搞乱标志(特别是FLAG_ACTIVITY_NEW_TASK,FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT),但到目前为止还没有成功。

如果有人可以帮助我,我可以专注于我的下一个挑战 - 让它成为真正的饲料读者:P

提前致谢,

3 个答案:

答案 0 :(得分:20)

您需要在清单中将自己的行为标记为"singleTask""singleInstance"。我不记得2之间的确切差异,但要么应该做你想要的。 SingleInstance只是做了与堆栈不同的事情。

示例:

<activity android:name="MainActivity" android:launchMode="singleInstance"></activity>

您可以使用onNewIntent()

处理来自同一活动实例的startActivity()新调用

答案 1 :(得分:5)

我知道了!

对于那些阅读这个问题并希望了解摘要的人:我错误地认为有一个以上的活动正在运行,但是在运行时出现了更多的MediaPlayer实例。我让我的媒体播放器成为了一个类成员,现在我正在从onStart()事件中控制它。

我正在使用SharedPreferences检查流是否需要重置和更改源,或者继续运行并只显示界面。

感谢您的所有反应。真的帮了我。

答案 2 :(得分:-7)

只需编辑.xml中的包名称

EX:com.org.MainActivity 改成        .org.MainActivity

它适用于我.....好