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