В настоящее время я использую SurfaceView для потокового видео.Он прекрасно работает после того, как я сыграю 3 или более фильмов до конца.Когда пользователь выходит или видео заканчивается, я уже выпускаю медиаплеер, чтобы очистить память.
После 5 минут бездействия приложения я играю заставку (также видеопоток), которая зацикливается до тех пор, пока пользователь не нажмет любую кнопку на пульте дистанционного управления.Затем, если приложение не используется в течение 5 минут, я снова играю заставку.Теперь случилось то, что вид с поверхности просто отображал черный цвет, а местный телевизионный проигрыватель также отображал черный цвет.Приложение также всегда открыто, если пользователь не выключит устройство.
Я думаю, что, возможно, заставка, которая продолжает работать, является причиной появления черных экранов.Размер заставки составляет 75 МБ.
Этот код я делаю, когда пользователь выходит из проигрывателя или когда видео завершается.
if(player != null) {
if (player.isPlaying()) {
player.stop();
}
player.setOnErrorListener(null);
player.reset();
player.release();
player = null;
}
Могу ли я просто выпустить медиаплеер до или после того, как я смогу воспроизвести видео?Я думаю об ограничении количества скринсейверов.Если я достигну предела, я остановлю следующий, чтобы освободить медиаплеер.Затем снова вызовите заставку, чтобы казалось, что заставка все еще зациклена.