Привет, Я разрабатываю приложение для Android, в котором у меня есть одна простая деятельность, содержащая кнопку для запуска новой активности. новая активность содержит вид поверхности для показа видео. Я знаю, что подготовка медиаплеера работает в основном потоке, поэтому я использую prepareAsync. Так моя проблема такая. Я нажимаю кнопку активности stat, которая запускает новую активность и запускает загрузку видео. Если я вернусь до начала видео, т. Е. Нач. Медиаплеера(), он вернется к предыдущему действию. Но пользовательский интерфейс этой активности неактивен в течение некоторого времени. Это означает, что я не могу нажимать кнопку запуска в течение некоторого времени. Через некоторое время он снова активируется. Есть ли кто-то, столкнувшись с одной и той же проблемой. Мой код выглядит так:Android для подготовки медиа-проигрывателя вызывает блокировку пользовательского интерфейса
@Override
public void surfaceCreated(SurfaceHolder arg0) {
// TODO Auto-generated method stub
Log.i("FFFFFFFFFFFFFFFFFFF ", "FFFFFFFFFFFFFFFFFFF ");
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDisplay(surfaceHolder);
try {
mediaPlayer.setDataSource(getApplicationContext(), targetUri);
mediaPlayer.prepareAsync();
//mediaPlayer.prepare();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
mediaPlayer.start();
}
});
}
Как избежать этой ситуации. Я делаю что-то неправильно. Нужна помощь. Спасибо.
Вы пробовали вызывать mediaPlayer.release() в onBackPressed? – Niko
Да, я делаю mediaPlayer.release() внутри onDestroy. тоже сделав медиаPlayer = null.But еще такой же результат. – nilkash
Возможный дубликат http://stackoverflow.com/questions/7445145/mediaplayer-prepare-problem? – palsch