在 Android 4.4(KitKat)之后,WebView 发生了一些变化,并引入了 Chromium 内核。这些变化带来了一些注意事项,特别是在处理 WebView 的行为和性能方面。以下是 Android 4.4 之后使用 WebView 时的一些重要注意事项:

1. 使用 WebView 组件:

在布局文件中使用 WebView 组件,而不是 WebView 的子类(例如 WebViewClient 和 WebChromeClient):
<WebView
    android:id="@+id/webView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
/>

2. 启用硬件加速:

在 AndroidManifest.xml 文件中,确保应用启用硬件加速:
<application
    android:hardwareAccelerated="true"
    ...>
    ...
</application>

硬件加速有助于提高 WebView 的性能。

3. 使用新的 WebView 构造函数:

在 Android 4.4 及更高版本,推荐使用新的 WebView 构造函数来创建 WebView 实例:
WebView webView = new WebView(context.getApplicationContext());

4. 使用多进程 WebView:

在 Android 4.4 及更高版本,WebView 默认在单独的进程中运行。确保在 AndroidManifest.xml 文件中启用多进程 WebView:
<application
    ...
    android:allowBackup="true"
    android:largeHeap="true"
    android:hardwareAccelerated="true"
    android:usesCleartextTraffic="true"
    android:networkSecurityConfig="@xml/network_security_config"
    android:theme="@style/AppTheme">

    <meta-data
        android:name="android.webkit.WebView.Multiprocess"
        android:value="true" />

    ...
</application>

5. 使用默认的 WebView 设置:

在 Android 4.4 及更高版本,WebView 默认启用了一些新的设置,包括安全性设置和缓存设置。尽量避免手动设置这些默认设置,以充分利用新的默认行为。

6. 处理混合内容:

在 Android 4.4 之后,WebView 默认禁用了混合内容(HTTP 和 HTTPS 混合加载)。如果你的应用需要加载混合内容,可以使用以下方式:

在 res/xml 目录下创建 network_security_config.xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">your.domain.com</domain>
    </domain-config>
</network-security-config>

然后,在 AndroidManifest.xml 中引用这个配置:
<application
    ...
    android:networkSecurityConfig="@xml/network_security_config"
    ...>
    ...
</application>

7. 处理 Cookie:

在 Android 4.4 之后,CookieManager 默认不允许第三方 Cookie。如果需要支持第三方 Cookie,可以使用以下代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);
}

这样,WebView 就能够接受第三方 Cookie。

总体而言,在使用 Android 4.4 及更高版本的 WebView 时,确保遵循上述注意事项,可以帮助你更好地处理 WebView 的行为和性能。随着 Android 版本的更新,WebView 的变化可能会有所调整,因此建议查阅最新的官方文档和变更日志。


转载请注明出处:http://www.zyzy.cn/article/detail/15202/Android