2012-01-10 55 views
0

我創建了一個應用程序其音樂播放器只有一個簡單的佈局按鈕用於播放和停止。當我按播放按鈕音樂開始播放和播放按鈕更改爲停止按鈕..然後,當我按下後退按鈕應用程序進入背景,所以我必須去菜單,並從那裏啓動應用程序的問題是,如果我這樣做,android開始我的應用程序的新實例,並停止按鈕回到播放按鈕..我不想..我想要的是,Android恢復我的應用程序,並把它帶回到前臺,並保留狀態我所有的按鈕。從後臺恢復我的應用程序

+0

我已經添加了一些基本的代碼示例。很難準確猜測你的音樂播放器的設置,但這可能是一個好的開始。 – dokkaebi 2012-01-22 06:32:26

回答

0

當用戶使用後退按鈕退出應用程序時,您的應用程序將停止並且不會保存狀態。您需要保存所需的任何狀態,以便像Activity.onStop這樣的生命週期方法之一恢復應用程序。對活動生命週期here有很好的描述。

還有一個部分叫做Saving Persistent State,它講述了更多關於使用Shared Preferences的內容。

[編輯]

我在這裏做你的代碼可能是什麼樣子的一些假設,但我希望你至少可以適應這些想法與你有什麼工作。在活動中添加幾件事情可能會有所斬獲。

當你的應用程序被關閉你會希望能夠保存相關設置:

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

我真的不明白它...你能給我一個示例代碼,我可以按照即時通訊真正的初學者在Android編程 – HeartlessArchangel 2012-01-19 08:24:51

相關問題