从后台恢复我的申请

时间:2012-01-10 05:21:07

标签: java android

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

1 个答案:

答案 0 :(得分:0)

当用户使用后退按钮退出您的应用时,您的应用将停止并且不会保存任何状态。您需要在Activity.onStop等生命周期方法之一中保存恢复应用程序所需的任何状态。对活动生命周期here有一个很好的描述。

还有另一个名为Saving Persistent State的部分,它更多地讨论了如何使用Shared Preferences

[编辑]

我在这里做了一些关于你的代码可能会是什么样子的假设,但希望你至少可以调整这些想法来使用你所拥有的东西。在您的Activity中添加一些内容可能会有所帮助。

您希望在关闭应用时能够保存相关设置:

@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);
}