我想在Android Service類中使用MediaPlayer創建restart()函數。 它會重新啓動MediaPlayer,並嘗試再次連接到相同的URL,如果發生錯誤,特別是IO Exception。在Android上重新啓動MediaPlayer on IO異常
什麼是嘗試多次連接重試的最佳方式?有可能在通話之間進行延遲。它可以在使用Thread.sleep的重啓功能中完成,但可能這不好,因爲掛起服務。在重新啓動期間,用戶可能需要呼叫另一個站點URL,因此重新啓動必須以此方式取消。
這裏是潛在功能的例子...
public void restart()
{
try
{
this.playlist="ERROR";
for (int u=1; u<5; u++)
{
if (on==false)
{
Thread.sleep(15000); // maybe bad
mplayer.reset(); //
String currenturl2=currenturl;
currenturl="";
playSong(getApplicationContext(),currenturl2); // starting play
playlist="RESTARTING...("+String.valueOf(u)+")";
// we must block retries somehow when we catch playing again
};
};
}
catch (Exception e)
{
playlist="RESTART ERROR";
Log.e(TAG2,"a"+e.toString());
}
}
這可能不是做一個週期的重啓,並在異常引發新的重啓... 也許有人有一些現成的代碼/算法看。
謝謝。我有onError方法,但還無法模仿它的工作。第一個異常不會出現在Error中(當我禁用網絡時,但其他情況下可能會觸發onError)。但是在任何情況下,我都可以路由到restart()函數。也許一個新的線程不是必需的。據我所知,在異常情況下可能會有幾次重新啓動()的調用。儘管如此,一會兒只有一次重新啓動,並且不能多次啓動流。我需要儘快穩定版本,但最好使用最簡單的穩定版本。 – Tramway11