Я в замешательстве и с нетерпением жду комментариев по этому поводу. Я предполагал, что WebView создает отдельную поверхность для рисования и не использует поверхность по умолчанию для рисования. Но в дампе Surfaceflinger я не вижу создания новой поверхности при использовании веб-просмотра.
Когда я провожу аналогичный эксперимент с использованием видеопросмотра, я вижу, как создается отдельная поверхность.
В Onwebview я также хотел воспроизвести видео, поэтому предполагал, что будет создана отдельная поверхность и, следовательно, разрешение поверхности будет соответствовать разрешению видео. Но если он использует поверхность приложения, то максимальное разрешение видео должно соответствовать разрешению пользовательского интерфейса.
В коде хрома я вижу код для отдельной поверхности, но на практике я не мог видеть, как создается одна.
Может кто-нибудь помочь мне прояснить это.
Спасибо.
2 ответа
Если вы посмотрите на график наследования VideoView, вы заметите, что он наследуется от SurfaceView
, а WebView
нет, поэтому WebView может добиться этого только путем создания внешнего SurfaceView.
Если вы выполните поиск использования ExternalVideoSurface в части кода Chromium для WebView, вы заметите, что она активна только в том случае, если включена «дыра для видео», которая предназначена для использования только для декодирования зашифрованных видео, когда WebView необходимо «пробивать дыры». Существует системный уровень API в WebView, который позволяет такое поведение, но имеет свои ограничения, поэтому его не рекомендуется использовать в целом.
Мне также любопытно, что веб-просмотр не находится в дампе sufaceflinger.
Я думаю, что причина в том, что веб-просмотр также отображается в собственном окне связанной активности, поэтому в этой ситуации нет другой поверхности.
Но ситуация в последней версии Android и Webview, похоже, отличается от разработчиков.
Похожие вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.