0

我在活動A中開始播放音樂。當活動B打開時,活動A關閉,活動A中的音樂也停止播放。當我回到活動A時,我希望音樂從停止播放的地方繼續播放。我該怎麼做呢?如何讓音樂恢復播放?

+0

您是否在使用股票媒體播放器? – Thegluestickman

回答

1

你需要存儲(永久),您的媒體是在位置onPause()或活性的onStop(),然後在onResume()檢查存儲的值並在您的mediaplayer上撥打seekTo()。事情是這樣的:

讓你的SharedPreferences對象:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
SharedPreferences.Editor prefsEdit = prefs.edit(); 

存儲和調用的位置。

public void onPause(){ 
    super.onStop(); 
    //It might make more sense to do this right before you call startActivity() 
    //to launch activityB then here. 
    int position = mp.getCurrentPosition(); 
    prefsEdit.putInt("mediaPosition", position); 
    prefsEdit.commit(); 
} 

public void onResume(){ 
    super.onResume(); 
    int position = prefs.getInt("mediaPosition", 0); 
    mp.seekTo(position); 
} 

注意,如果你使用這種方法,你還需要將位置設置爲0時,你不用去B.退出ActivityA否則,當你回來給它的音樂是不會在開始開始。

0

在活動A中,重寫onPause()方法以暫停MediaPlayer並覆蓋onResume()以恢復MediaPlayer。並且確保去活動B時媒體控制器對象不會被破壞。

+0

這不能保證能正常工作。如果手機需要內存,它將回收活動A中使用的資源。包括MediaPlayer,然後無法在重新啓動活動時恢復A – FoamyGuy

+0

感謝您糾正我! –

0

實際上看到實時媒體播放器是在服務上處理的,但如果仔細觀察它,則不在活動上。所以我的建議是,嘗試寫媒體玩家在媒體播放器類的服務,並更好地利用生命週期方法,並與服務活動