Ответ 1
После того, как я боролся с этим некоторое время, я придумал пару возможных решений:
a) очистить поверхность, используя GLES. Вы можете увидеть пример в Grafika (проверьте метод clearSurface()). Я лично не поклонник этого, потому что я не думаю, что резкий переход к черному выглядит особенно хорошо, и это справедливый бит технических накладных расходов, если вы еще не используете GL-код. Кроме того, это, похоже, работает только для API 17 +.
b) Мое выбранное решение состояло в том, чтобы просто создать новый TextureView и добавить его в соответствующее представление каждый раз, когда я захочу воспроизвести видео, вместо повторного использования старого. Я бы не стал называть это хорошим решением, но это наименее ужасное, что я мог найти.
c) Одна вещь, которую вы могли бы сделать, если снова воспроизводить одно и то же видео, - это попытаться найти первый кадр видео, когда он будет воспроизводиться. Затем в следующий раз, когда последний кадр будет мигать, он не будет виден, так как он будет тем же самым кадром, что и начало видео. У меня был некоторый успех в этом, но я не мог заставить его работать надежно на всех устройствах. Это также довольно четко взломать.
Удачи, это было очень неприятно, чтобы попытаться исправить.