Как выпустить медиаплеер, если он зациклен? - PullRequest
0 голосов
/ 13 октября 2018

В настоящее время я использую SurfaceView для потокового видео.Он прекрасно работает после того, как я сыграю 3 или более фильмов до конца.Когда пользователь выходит или видео заканчивается, я уже выпускаю медиаплеер, чтобы очистить память.

После 5 минут бездействия приложения я играю заставку (также видеопоток), которая зацикливается до тех пор, пока пользователь не нажмет любую кнопку на пульте дистанционного управления.Затем, если приложение не используется в течение 5 минут, я снова играю заставку.Теперь случилось то, что вид с поверхности просто отображал черный цвет, а местный телевизионный проигрыватель также отображал черный цвет.Приложение также всегда открыто, если пользователь не выключит устройство.

Я думаю, что, возможно, заставка, которая продолжает работать, является причиной появления черных экранов.Размер заставки составляет 75 МБ.

Этот код я делаю, когда пользователь выходит из проигрывателя или когда видео завершается.

if(player != null) {
   if (player.isPlaying()) {
       player.stop();
   }
   player.setOnErrorListener(null);
   player.reset();
   player.release();
   player = null;
}

Могу ли я просто выпустить медиаплеер до или после того, как я смогу воспроизвести видео?Я думаю об ограничении количества скринсейверов.Если я достигну предела, я остановлю следующий, чтобы освободить медиаплеер.Затем снова вызовите заставку, чтобы казалось, что заставка все еще зациклена.

...