2012-09-17 76 views
0

我有2个活动,一个主要启动一个mediaplayer流,一个按钮导致启动活动#2,然后完成()当前Activity活动#1的任务完成这一点,音乐播放器在这一点上没有问题。活动#2打开后,媒体播放器工作约5秒钟然后停止,在活动#2中,我只有一个按钮退出,并且在Handler的帮助下运行一个AsyncTask。Media Player在新Activity上停留5秒后停止

+0

可能与您的问题无关,但为什么在打开活动2之前打完活动1?您应该打开活动2,并让用户使用设备上的后退按钮关闭活动2,这会将活动1带回到前面。手动完成和关闭活动会中断应用程序的预期导航流程。 – jlindenbaum

+3

发布代码,以便我们可以看到它。 –

+1

@jlindenbaum:在一个Activity上调用'finish()'是完全可以接受的,只要你这样做是出于正确的原因,也就是说,如果你不想再次返回到'Activity'。 – Squonk

回答

5

我相信你是来自活动1的MediaPlayer正从内存中抹去,因为你打电话给finish()MediaPlayer实例是第一个Activity的一部分。解决此问题的唯一方法是在活动2中新建一个MediaPlayer或创建一个Service,以处理后台中的所有媒体。如果你这样做,第二种方法是,一个MediaPlayer实例将继续在所有活动中播放,并且只需要向它发送命令。

+0

了解,这似乎符合我的情况。你有没有提出这两种方法的例子?谢谢。 – kabuto178

+1

这与你现在正在做的事情没有什么不同。第一种方法可能要求你在'Intent'中发送一个'Bundle'来告诉Activity哪个声音正在播放,音量等。第二种方法类似于这个:http://marakana.com/forums/android/例子/ 60.html – DeeV

+0

再次感谢,这帮助我赢得了我的征服!大声笑,批准的答案,因为它有助于我的情况 – kabuto178