我是android的新手,所以我在思考解决方案时遇到了问题。我做的第一件事是将活动改为不同的屏幕,而在活动中我下载了一首歌。然后我返回MainActivity,这是一个MediaPlayer活动。现在,我对活动生命周期有点困惑,如果我返回MainActivity,并运行:
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
File song = new File(path, "SpaceJam.mp3");
那是在我的onCreate中,所以基本上我问每次你回到活动时onCreate会运行吗?
其次,我有一个播放/暂停按钮:
btnPlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// check for already playing
if(mp.isPlaying()){
if(mp!=null){
mp.pause();
// Changing button image to play button
btnPlay.setImageResource(R.drawable.play_t); }
}else{
// Resume song
if(mp!=null){
mp.start();
// Changing button image to pause button
btnPlay.setImageResource(R.drawable.pause_t);
}
}
}
});
问题是,我不想使用:
mp.setDataSource(path+"/"+fileName);
mp.prepare();
mp.start();
在我的播放按钮上,因为它每次都会重新初始化歌曲。这样做的最佳方式是什么?
由于
答案 0 :(得分:1)
That's in my onCreate, so basically I'm asking does onCreate run every time you return to an activity?
没有。 onResume()
或onStart()
是不错的选择,但您应该阅读活动生命周期文档并相应地选择。
http://developer.android.com/training/basics/activity-lifecycle/index.html
On my play button, because it'll reinitialize the song every time. What's the best way to go about doing this?
要保存当前位置,例如在onPause()
Mediaplayer.pause();
length=Mediaplayer.getCurrentPosition();
要恢复,例如在onResume()
Mediaplayer.seekTo(length);
Mediaplayer.start();