繁体   English   中英

从后台恢复我的应用程序

[英]resuming my application from background

我创建了一个应用程序,它的音乐播放器只有一个简单的布局,一个按钮用于播放和停止。 当我按下播放按钮时,音乐开始播放,而播放按钮变为停止按钮..然后,当我按下后退按钮时,应用程序进入后台,因此我必须进入菜单并从那里启动应用程序是如果我这样做,则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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM