在 Android mp3 应用程序中终止 Intent 的重叠线程

Kill Overlapping Threads from Intent in Android mp3 app

我在 android mp3 播放器中播放音乐时遇到了一个问题(我认为)。我有一个 class SongList.java 可以在单击某个项目时列出并播放音乐,还有一个 ArtistList.java 可以让 SongList 播放该特定艺术家的歌曲。如果两首或多首歌曲不在同一 activity 中,则会同时播放。

如何让我的 playSong 方法停止除最近的线程之外的所有线程?

您应该只有一个线程或服务在进行播放。 SongListArtistList 不应启动新服务。相反,你应该有一个 PlaybackService 你可以传递一个 SongListArtistList 作为参数/参数。如果这样做,您应该只有一个线程进行播放,而不会 运行 陷入那种麻烦。

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

他们实现了一个 Service,它使用 MediaPlayer 中的构建来播放音频。接下来,您可以将 MusicPlaybackService 绑定到 activity.

介绍一下: http://developer.android.com/guide/components/bound-services.html

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