防止重复活动

Vic*_*c V 17 java android

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

我想确保某个活动同时运行不止一次.所以我们有一个类似这样的任务:
Activity A)一个TabActivity,它启动
Activity B)一个ListView,点击它,打开
Activity C),这是一个mediaplayer对象的接口

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

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

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

提前致谢,

Fal*_*rri 21

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

示例:

<activity android:name="MainActivity" android:launchMode="singleInstance"></activity>
Run Code Online (Sandbox Code Playgroud)

您可以使用相同的活动实例处理对startActivity()的新调用 onNewIntent()

  • "我不记得2`之间的确切差异,那你为什么回答这个问题呢?你从今天起没有时间调查和编辑你的答案吗?接受的流行答案应该是明确的. (2认同)

Vic*_*c V 6

我懂了!

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

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

谢谢你的所有反应.真的帮帮我了.