Java 从后台恢复我的应用程序

Java 从后台恢复我的应用程序,java,android,Java,Android,我已经创建了一个应用程序,它是一个音乐播放器,只有一个简单的布局,一个用于播放和停止的按钮。当我按下播放按钮时,音乐开始播放,播放按钮变为停止按钮。。然后,当我按下后退按钮时,应用程序进入后台,因此我必须进入菜单并从那里启动应用程序。问题是,如果我这样做,android会启动我的应用程序的新实例,停止按钮是返回播放按钮。。我不想。。我只想让android恢复我的应用程序并将其恢复到前台,并保留我所有按钮的状态。当用户使用“后退”按钮退出你的应用程序时,你的应用程序将停止,并且不保存任何状态。您需

我已经创建了一个应用程序,它是一个音乐播放器,只有一个简单的布局,一个用于播放和停止的按钮。当我按下播放按钮时,音乐开始播放,播放按钮变为停止按钮。。然后,当我按下后退按钮时,应用程序进入后台,因此我必须进入菜单并从那里启动应用程序。问题是,如果我这样做,android会启动我的应用程序的新实例,停止按钮是返回播放按钮。。我不想。。我只想让android恢复我的应用程序并将其恢复到前台,并保留我所有按钮的状态。

当用户使用“后退”按钮退出你的应用程序时,你的应用程序将停止,并且不保存任何状态。您需要将恢复应用程序所需的任何状态保存到某个生命周期方法(如Activity.onStop)中。对活动生命周期有很好的描述

下面还有一个部分叫做,它更多地讨论了如何使用

[编辑]

我在这里对您的代码可能是什么样子做了一些假设,但希望您至少能够调整这些想法,使之与您现有的代码配合使用。只需在你的活动中添加一些东西就可以了

当应用程序关闭时,您希望能够保存相关设置:

@Override
public void onSaveInstanceState(Bundle icicle) {
    super.onSaveInstanceState(icicle);
    icicle.putString("path", mMediaPath);
    icicle.putInt("time", mMediaPlayer.getCurrentPosition());
    icicle.putBoolean("isPlaying", mMediaPlayer.isPlaying());
}
您需要设置一种方法,以根据这些设置初始化媒体播放器。大概是这样的:

private void initialize(String path, int time, boolean isPlaying) {
    mMediaPlayer.setDataSource(path);
    mMediaPlayer.seekTo(time);
    if (isPlaying) mMediaPlayer.start();
    findViewById(R.id.my_play_button).setBackgroundResource(isPlaying? R.drawable.pause_button: R.drawable.play_button);
}
然后,您可以在重新创建活动时调用:

@Override
public void onRestoreInstanceState(Bundle icicle) {
    super.onRestoreInstanceState(icicle);
    String path = icicle.getString("path", DEFAULT_TRACK);
    int time = icicle.getInt("time", 0);
    boolean isPlaying = icicle.getBoolean("isPlaying", false);
    this.initialize(path, time, isPlaying);
}

我真的不明白。。。你能给我一个我能理解的示例代码吗?我真的是一个android编程的初学者。我已经添加了一些基本的代码示例。很难准确地猜测你的音乐播放器是如何设置的,但这可能是一个好的开始。