2

简而言之,我想知道 android webview 在幕后是如何工作的。我搜索了互联网,找不到讨论 webview 类的内部工作的文章或资源。它本质上是一个用于在浏览器中查看网页的模拟器,对吧?

这是否意味着它采用了严格的客户端-服务器关系,类似于 Android 浏览器,还是比这更复杂?

是否有任何理由网页将在 Android 浏览器中完美显示,但在通过 webview 从 Android 应用程序中打开时会产生服务器端错误?也就是webview会不会诱发服务端代码错误?

谢谢你。

4

3 回答 3

2

您的问题似乎基于其他人已经解决的一些误解。

相反,我将评论其他人忽略的内容:

虽然默认的 Android 浏览器基于与 webview 相同的引擎,但它以未完全记录/非公共 api 的方式进行了大幅扩展,并且实际上会表现不同。所以是的,有很多原因可以在默认浏览器中工作,但在 web 视图中却不行。其中一些差异可以通过 webview 的配置选项轻松纠正,其他差异将非常棘手,您可能需要查看替代浏览器的来源以找到可跨 android 版本移植的解决方案(就像浏览器一样它与为其构建的特定版本耦合)。

客户端行为的差异是否会导致服务器端错误取决于服务器对客户端的假设,以及它对意外客户端行为的鲁棒性。

于 2012-06-19T16:16:04.030 回答
1

它本质上是一个用于在浏览器中查看网页的模拟器,对吧?

仅限于任何 Web 浏览器“是在浏览器中查看网页的模拟器”。WebView是位于 Safari、Chrome 等核心的 WebKit Web 资产检索和渲染引擎。

这是否意味着它采用了严格的客户端-服务器关系,类似于 Android 浏览器

AOSP Android 浏览器以及除 Opera 和 Mozilla 之外的大多数 Android 浏览器都使用 WebView. 因此,您在服务器端使用 . 时看到的行为WebView通常应该与WebView.

也就是webview会不会诱发服务端代码错误?

不比任何其他浏览器都多。

于 2012-06-19T16:09:38.650 回答
1

考虑 webview 的最佳方式是它是没有地址栏的本机 web 浏览器。它将以与普通浏览器完全相同的方式呈现 HTML、CSS、javascript 等。

我看不出谷歌为什么会创建本机浏览器然后忽略该代码而不将其扩展为其 SDK 中的 webview 的任何原因?

于 2012-06-19T14:29:06.443 回答