Кто-нибудь еще видел ошибку с веб-представлением HTC Flyer (аппаратное ускорение) или нашел исправление?

Эта проблема ОЧЕНЬ специфична для HTC Flyer. Тот, который был обновлен до Honeycomb или более поздней версии. Похоже, что если аппаратное ускорение включено, то WebView просто отображается пустым. Появляется цвет фона, и вы можете прокручивать. Вы даже можете выделять текст или нажимать ссылки, но вы просто ничего не видите. Это все невидимо.

Он также регистрирует массу следующего:

D/GLUtils(6612): GL ERROR - after drawQuad() glError (0x502)

Похоже на ошибку с Flyer, но кто-нибудь успешно использовал аппаратное ускорение с этим устройством и WebView?

Обновить

Я обнаружил, что эта проблема возникает, когда первый WebView приложения не имеет аппаратного ускорения. После этого любые дальнейшие WebView не смогут быть аппаратно ускорены без возникновения этой проблемы.

Чтобы воспроизвести:

Создайте два действия. Каждое действие может иметь только WebView. В первом действии должно быть отключено аппаратное ускорение. Во втором он должен быть включен.

В первом действии (без аппаратного ускорения) загрузите URL-адрес. Страница загрузится нормально. Теперь через некоторое время после того, как страница загрузится и отобразится, начните второе действие с первого.

Второе действие (с аппаратным ускорением) также должно загружать URL-адрес. Это приведет к возникновению ошибки. WebView второго действия будет отображаться пустым.

Также:

Как ни странно, вы можете сделать следующее, и это сработает:

Начните занятие с аппаратным ускорением и веб-просмотром. Загрузите URL-адрес и после его отображения запустите второе действие без аппаратного ускорения. Затем во втором действии загрузите URL-адрес, а затем, после его отображения, запустите третье действие с аппаратным ускорением. Третья активность будет отображаться правильно.

Таким образом, эта проблема возникает только в том случае, если самый первый WebView, который запускается внутри жизненного цикла/экземпляра приложения, не имеет аппаратного ускорения. Кажется, что если вы это сделаете, то любой WebView, который позже попытается получить аппаратное ускорение, не будет работать должным образом.

Опять же, из сотен устройств, на которых работает это приложение, это происходит только на HTC Flyer.


person cottonBallPaws    schedule 29.05.2012    source источник


Ответы (1)


Спасибо, что сообщили о проблеме. Я не смог заставить это произойти в моих собственных тестах. Можете ли вы предоставить более подробную информацию о том, что вы делаете?

В своих тестах я создал простое приложение для Android с WebView, которое показывает файл index.html из папки с ресурсами. Я убедился, что аппаратное ускорение включено как с помощью высокого targetSdkVersion, так и с явной установкой для hardwareAccelerated значения true в Android Manifest.xml. Контент отлично отображается в обновленном флаере, на котором я тестировал.

Я слышал, что веб-представление с аппаратным ускорением не будет работать внутри других элементов с аппаратным ускорением, таких как представления прокрутки, и аналогичные проблемы с отображением веб-контента поверх другого веб-контента. Так что, может быть, что-то подобное на работе.

Вот тестовый проект, который сейчас работает: https://github.com/lnanek/HWWebView.

Вот из него AndroidManifest.xml:
‹?xml version="1.0" encoding="utf-8"?›
‹manifest xmlns:a="http://schemas.android.com/apk /res/android"
package="com.htc.sample.hwwebview"
a:versionCode="2"
a:versionName="2.0" ›
‹uses-sdk a:minSdkVersion ="3" a:targetSdkVersion="15" /›
‹uses-permission a:name="android.permission.INTERNET" /›
‹application a:icon="@drawable/ic_launcher" a: label="@string/app_name" a:hardwareAccelerated="true" ›
‹activity a:name=".Viewer" a:label="@string/app_name" ›
‹intent-filter›
‹action a:name="android.intent.action.MAIN" /›
‹category a:name="android.intent.category.LAUNCHER" /›
‹/intent-filter›
‹/активность›
‹/приложение›
‹/манифест›

Вот основной макет:
‹?xml version="1.0" encoding="utf-8"?›
‹WebView
xmlns:android="http://schemas.android.com/apk /res/android"
android:id="@+id/webView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/›

person Lance Nanek    schedule 30.05.2012
comment
Привет, Лэнс, я обновил свой ответ некоторыми дополнительными шагами для воспроизведения. - person cottonBallPaws; 30.05.2012