Я бы порекомендовал вам сохранить текущую видео-публикацию (и все, что вам нужно в случае перезапуска) и остановить воспроизведение в onPause. В onDestroy вам нужно выпустить MediaPlayer. Если пользователь вернется, вы получите onResume или onCreate. В onCreate вы начинаете игрока снова, как в первый раз. В onResume вы создаете проверку безопасности, если игрок действительно запущен и все ли в порядке, начните воспроизведение (или дождитесь события щелчка). Проверьте также последнюю сохраненную позицию для возможного поиска.
Я бы извлек код из OnButtonClickListener в отдельный метод и вызвал бы этот метод из clickListener или в onResume, если вы хотите запустить автозапуск.
Обновленный ответ:
Я сделал ошибку с выпуском. Это делается VideoView в методе stopPlayback
(см. Исходный код VideoView в grepcode).
Я не знаю, как работает ваш потоковый сервер RTSP, но используемый потоковый сервер не поддерживает поиск с помощью метода VideoView seekTo
. Вы можете позвонить pause
в onPause
и start
в onResume
, но это начнет поток с 0 (в моем случае). Поэтому мне пришлось создать пользовательскую панель поиска. Но это другая история.
В моей реализации я звоню pause
в onPause
и stopPlayback
в onDestroy
. В onPause
я также сохраняю последнюю позицию. В onCreate
я только вижу и устанавливаю средства управления мультимедиа. В onResume
я проверяю, есть ли у меня информация о последней позиции. Если это существует, я подготавливаю игрока (setVideoPath
, requestFocus
, start
) с этим параметром (поиск), в противном случае без (поиск = 0).
Это мое решение :) 1027 *