在 Android mp3 应用程序中终止 Intent 的重叠线程
Kill Overlapping Threads from Intent in Android mp3 app
我在 android mp3 播放器中播放音乐时遇到了一个问题(我认为)。我有一个 class SongList.java 可以在单击某个项目时列出并播放音乐,还有一个 ArtistList.java 可以让 SongList 播放该特定艺术家的歌曲。如果两首或多首歌曲不在同一 activity 中,则会同时播放。
如何让我的 playSong 方法停止除最近的线程之外的所有线程?
您应该只有一个线程或服务在进行播放。
SongList
和 ArtistList
不应启动新服务。相反,你应该有一个 PlaybackService
你可以传递一个 SongList
或 ArtistList
作为参数/参数。如果这样做,您应该只有一个线程进行播放,而不会 运行 陷入那种麻烦。
看看这里:
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
可以管理播放并保证同时播放一个音乐文件。
我在 android mp3 播放器中播放音乐时遇到了一个问题(我认为)。我有一个 class SongList.java 可以在单击某个项目时列出并播放音乐,还有一个 ArtistList.java 可以让 SongList 播放该特定艺术家的歌曲。如果两首或多首歌曲不在同一 activity 中,则会同时播放。
如何让我的 playSong 方法停止除最近的线程之外的所有线程?
您应该只有一个线程或服务在进行播放。
SongList
和 ArtistList
不应启动新服务。相反,你应该有一个 PlaybackService
你可以传递一个 SongList
或 ArtistList
作为参数/参数。如果这样做,您应该只有一个线程进行播放,而不会 运行 陷入那种麻烦。
看看这里: 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
可以管理播放并保证同时播放一个音乐文件。