4

此问题非常特定于 HTC Flyer。已升级到 Honeycomb 或更高版本的一种。看来,如果硬件加速已打开,那么 WebView 只会呈现空白。背景颜色出现,您可以滚动。您甚至可以突出显示文本或点击链接,但您什么也看不到。这一切都是看不见的。

它还记录了大量以下内容:

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

看起来像是 Flyer 的一个错误,但有没有人成功地在这个设备和 WebView 上使用了硬件加速?

更新

我发现这个问题是由于应用程序的第一个 WebView 没有硬件加速造成的。然后,如果不发生此问题,任何进一步的 WebView 都将无法进行硬件加速。

重现:

创建两个活动。每个活动中只能有一个 WebView。第一个活动应该禁用硬件加速。第二个应该启用它。

在第一个活动(非硬件加速活动)中,加载一个 url。该页面将正常加载。现在,在页面加载并显示后的某个时间,从第一个活动开始第二个活动。

第二个活动(硬件加速的活动)也应该加载一个 url。这将导致错误发生。第二个活动的 WebView 将显示为空白。

还:

奇怪的是,您可以执行以下操作,它会起作用:

使用硬件加速和 web 视图启动活动。加载一个 url 并在它显示后,在没有硬件加速的情况下启动第二个活动。然后在第二个活动中,加载一个 url,然后在它显示后,使用硬件加速启动第三个活动。第三个活动将正确显示。

所以这个问题似乎只有在应用程序生命周期/实例中运行的第一个 WebView 没有硬件加速时才会发生。似乎如果您这样做,那么以后尝试进行硬件加速的任何 WebView 都将无法正常工作。

同样,在运行此应用程序的数百台设备中,这只发生在 HTC Flyer 上。

4

1 回答 1

1

感谢您报告问题。我无法让它在我自己的测试中发生。你能提供更多关于你在做什么的细节吗?

在我的测试中,我创建了一个带有 WebView 的简单 Android 应用程序,该应用程序显示其 assets 文件夹中的 index.html 文件。我确保通过高 targetSdkVersion 和在 Android Manifest.xml 中将 hardwareAccelerated 显式设置为 true 启用了硬件加速。在我测试过的更新传单中,内容显示良好。

我听说硬件加速的 Web 视图无法在其他硬件加速元素中工作,例如滚动视图,以及在其他 Web 内容之上显示 Web 内容的类似问题。所以也许它在工作中可能是这样的。

这是当前正在运行的测试项目: https ://github.com/lnanek/HWWebView

这是其中的 AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:a="http://schemas.android.com/apk/res/android"
    包="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=".查看者" a:label="@string/app_name" >
            <intent-filter>
                <action a:name="android.intent.action.MAIN" />
                <category a:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

这是主要布局:
<?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"
    />

于 2012-05-30T17:55:11.550 回答