我有一个重叠的线程在我的android mp3播放器中播放音乐的问题(我认为)。我有一个SongList.java类,它在单击某个项目时列出并播放音乐,还有一个ArtistList.java,它意图使SongList播放该特定艺术家的歌曲。如果两首或多首歌曲不在同一活动中,则它们将同时播放。

我如何告诉我的playSong方法停止所有线程,但停止最近的线程?

最佳答案

您应该只有一个线程或服务可以进行播放。
SongListArtistList不应启动新服务。而是应该有一个PlaybackService,您可以传递SongListArtistList作为参数/自变量。如果这样做的话,您应该只有一个线程来进行播放,并且绝对不会遇到这种麻烦。

在这里看看:
http://developer.android.com/guide/topics/media/mediaplayer.html#mpandservices

他们实现了一个Service,该MediaPlayer使用MusicPlaybackService中的内置文件进行音频播放。接下来,您可以将Binder绑定到活动。

这里是一个介绍:
http://developer.android.com/guide/components/bound-services.html

您可以指定活动可以在playSongs(SongList songs)的帮助下在您的服务上调用的方法。因此,您可以提供一种类似playArtists(ArtistList list)MediaPlayer的方法,该方法可以由活动调用(即,通过单击某个按钮)。由于该服务运行回放(通过使用playSongs(SongList songs)),因此该服务负责线程和回放。因此,如果您调用该服务的MediaPlayer,则该服务应停止MediaPlayer并使用所需的音乐文件(由SongList提供)重新启动MusicPlaybackService。通过这种方法,您的可以管理播放,并确保仅同时播放一个音乐文件。

07-27 15:13