我有一个音频播放器应用,其中有一个Main活动,显示3个音频样本网址。单击其中一个,它将转到详细信息活动,该活动具有播放和暂停按钮,以启动和暂停音频。
我的问题是,当我开始主要活动,然后点击音频1时,我点击播放详情活动。这将启动MediaPlayer并开始播放音频。当我回到主要活动时,音频仍在播放,这就是我想要的。现在,当我再次点击音频1,然后转到详细信息活动并再次点击播放时,似乎有一个新的MediaPlayer启动音频。所以我有两首曲目一起玩!
有没有办法在任何给定时间只能有一个MediaPlayer实例?
由于 克里斯
答案 0 :(得分:1)
您应该考虑Singleton pattern。创建一个具有静态方法getMediaPlayer()的MyPlayer类,每次调用时返回相同的MediaPlayer实例。
答案 1 :(得分:0)
Singleton Class
public final class MySingleton extends Application {
static MediaPlayer instance;
public static MediaPlayer getInstance() {
if (instance == null)
{
instance = new MediaPlayer();
}
return instance;
}
}
适配器列表
在构造函数中初始化Singleton类一次
private static MediaPlayer mMediaPlayer = MySingleton.getInstance();
if (mMediaPlayer.isPlaying()) {
try {
mMediaPlayer.reset();
mMediaPlayer.stop();
mMediaPlayer.setDataSource(mainActivity, Uri.parse(songsarraylist.get(position).getPath()));
mMediaPlayer.prepare();
mMediaPlayer.start();
} catch (Exception e) {
Toast.makeText(mainActivity, "Catching", Toast.LENGTH_SHORT).show();
}
} else {
try {
mMediaPlayer.setDataSource(mainActivity, Uri.parse(songsarraylist.get(position).getPath()));
mMediaPlayer.prepare();
mMediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
}