Я хочу создать функцию restart() в классе Android Service, использующем MediaPlayer. Он перезапустит MediaPlayer и попытается снова подключиться к тому же URL-адресу, если произойдут некоторые ошибки, особенно IO Exception.Перезапуск MediaPlayer в Android на исключение 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());
}
}
Это можно не делать цикл FOR в перезапуске, и вызвать новый перезапуск в исключение ... Может быть, кто-то имеет некоторые готовый код/алгоритм для просмотра.
Спасибо. У меня есть метод onError, но я еще не смог подражать его работе. Первое исключение не срабатывает при ошибке (при отключении сети, но в других случаях можно запускать onError). Но во всех случаях я могу перенаправить функцию restart(). Возможно, новый поток не требуется. Насколько я понимаю, в случае исключения может быть несколько вызовов restart(). Несмотря на это, только один перезапуск должен быть запущен в одно мгновение, и не должно быть случая запуска потока несколько раз. Мне нужна стабильная версия ASAP, но лучше использовать простую стабильную версию. – Tramway11