0

我是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();

在我的播放按钮上,因为它每次都会重新初始化歌曲。这样做的最佳方法是什么?

谢谢

4

1 回答 1

1

That's in my onCreate, so basically I'm asking does onCreate run every time you return to an activity?

onResume(),或者onStart()会是不错的选择,但您应该阅读 Activity 生命周期文档并做出相应的选择。

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();
于 2013-09-22T23:44:16.860 回答