首页 文章

在Android mp3应用程序中杀死来自Intent的Overlapping Threads

提问于
浏览
0

我有一个问题(我认为)与重叠的线程在我的Android MP3播放器中播放音乐 . 我有一个类SongList.java,用于在单击项目时列出和播放音乐,还有一个ArtistList.java,用于调用SongList以播放该特定艺术家的歌曲 . 如果两首或多首歌曲不在同一个活动中,它们将同时播放 .

我怎么告诉我的playSong方法停止所有线程但最近的线程?

1 回答

  • 1

    您应该只有一个线程或服务进行播放 . SongListArtistList 不应该启动新服务 . 相反,你应该有 PlaybackService 你可以传递 SongListArtistList 作为参数/参数 . 如果这样做,你应该让一个单独的线程进行播放,并且永远不会遇到这种麻烦 .

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

    它们实现 Service ,它使用 MediaPlayer 中的内置进行音频播放 . 接下来,您可以将 MusicPlaybackService 绑定到活动 .

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

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

相关问题