VideoView не запускается, когда невидим

У меня есть AsyncTask, где я скрываю просмотр видео, запускаю воспроизведение видео и показываю просмотр видео, когда видео воспроизводится.

Но видео просто не запускалось, когда просмотр видео был установлен на невидимый, асинхронная задача продолжает зависать в onBackground. Если я закомментирую эту строку, видео начнет воспроизводиться. Почему для просмотра видео требуется видимая поверхность?

public void walk(final View v) {

    new AsyncTask() {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            mVideoView.setVisibility(View.INVISIBLE); // this line causes video not to start
            mVideoView.start();
        }

        @Override
        protected Object doInBackground(Object... objects) {
            while (!mVideoView.isPlaying()) {}
            return null;
        }

        @Override
        protected void onPostExecute(Object o) {
            super.onPostExecute(o);
            mVideoView.setVisibility(View.VISIBLE);
        }

    }.execute();

Немного фона, почему я это делаю: я пытаюсь избегайте хорошо известной проблемы черной вспышки, которая обычно возникает при запуске видео:

https://stackoverflow.com/search?q=%5Bandroid%5D+videoview+black

https: // stackoverflow .com / search? q =% 5Bandroid% 5D + video +% 5Bmediaplayer% 5D + black

14
задан Community 23 May 2017 в 10:28
поделиться