15

有没有更好的安卓网页视图?谷歌自己的文件提到不要依赖 webview 对象。

但是对于使用 webkit 来说,与在具有可比硬件的移动设备上使用的其他 webkit 浏览器相比,它如此有限似乎很奇怪。

这在 jquery 移动实现或类似的 web 应用程序的 sencha touch 实现中很明显。Android 版本会出现速度下降、渲染问题和糟糕的用户体验,而其他移动设备(如 iphone)可以正常运行。他们都使用 webkit。在应用程序之外,实际的 android 浏览器运行良好。

有没有办法在较低的层次上真正解决android的问题?有没有人为Android制作了一个更全面的网络对象?

感谢您的任何见解

4

4 回答 4

15

质量管理,

了解我同意 Commonswares 以及所提供答案中所述的几乎所有内容。但是,这个问题似乎暗示您遇到了一个问题(无论是在理解上还是在概念上),并且想要找到/开发更适合您需求的解决方案。

解决您可能会收到的问题和回复:

我相信 Commonswares的有效批评是由于您没有说明提供的平台对象为何如何不令人满意,也没有说明您为什么何时相信 Google 说过该对象不可靠。如果您想要更好的反馈,请适当地编辑您的问题以进行交流,这样您就会遇到更少的问题。

此外,正如下面进一步解释的那样,您暗示这是 Android 平台的问题(实际上,几乎直接说明了它)而事实并非如此。在 Web 浏览的广泛范围内有太多考虑因素,无法通过简单的控件(例如 WebView)来完全解决。早在 90 年代,微软的嵌入式 IE COM 对象就面临同样的问题。这是一个不属于任何一个群体的大问题。

解决隐含的问题:

WebView对象基本上是一个迷你浏览器,它使用基于与专用浏览器完全不同的参数的高度灵活的渲染代码。这包括从简单的渲染到可交互的 (sp?) 对象(例如此类页面将使用的链接)的所有内容。这个过程很难(因为没有更好的词)以这样一种方式小型化,即能够统一嵌入到各种应用程序中,这些应用程序每次可能具有不同的布局结构和参数。哎呀,这样的引擎即使使用专用的浏览引擎也很难统一编程,导致当前主要浏览器整体之间存在很多差异。

因此,这WebView并不意味着提供专用浏览器的全部功能,而是在通常执行其他操作的应用程序中显示 Web 交付内容的最有用的方面。当您考虑添加 Javascript 功能或从所述内容交付的基于客户端的处理的安全隐患时,尤其如此。除此之外,每个设备都有可能拥有不同的渲染引擎或相同渲染引擎的不同版本,这与不同设备利用 SQLite 具有不同功能(即外键支持)的方式非常相似。

因此,WebView 是作为一种解决方案提供的,用于显示 Web 交付的内容,但不保证其可扩展性或可用性,除非纯粹使用它来查看(并可能做出反应)受信任且符合标准的 HTML 代码。一旦您进入现实世界网站的实际实践,您就会意识到 HTML 之所以如此灵活,是因为不同的开发人员在不同的级别上遵守了每个标准。由于 HTML 的主要信条是它可以工作(显示内容),尽管存在潜在的歧义,开发一个完全全面的应用程序嵌入式面向对象解决方案的问题变得更加难以开发。

... 其他移动设备(如 iphone)可以正常运行

这取决于内容。此外,Apple 设备的开发理念与 Android 设备完全不同。Apple 只有少数设备,因此他们可以保证其设备之间的一致性,并选择添加哪些以及何时添加其他功能。例如,第一部 iPhone 没有对 Flash 的原生支持。根据您问题的含义,我认为这未通过“全面”测试。

相比之下,Android 拥有更广泛的设备库。Android 的代码由这些设备的制造商调整和更改,以使他们能够针对其特定设备需求制定更充分的可支持解决方案。Google 不能保证任何给定设备会以任何方式保持其任何或所有代码相同。这造成了进一步的限制,但也创造了其他非常棒的自由。

...他们都使用 webkit。

Chrome 和 Safari 也都使用 webkit。许多开发人员都被他们使用它的方式上的微小差异所困扰。

...在应用程序之外,实际的 android 浏览器运行得很好。

上面已经解决了这个问题。

有没有办法在较低的层次上真正解决android的问题?

同样,这不是android 的问题。如果您对当前实现有特定问题,您可以自由编写单独的解决方案。此外,使网页内容在浏览器中被查看并被提供。最佳实践是定义您需要它具体做什么。您需要WebView查看任何网页吗?还是只是你的?您当前的渲染有什么问题?您需要客户端脚本吗?

每个工具的制造都考虑到了特定的需求。这甚至对于所谓的“更好”的列表视图也是如此。这些观点旨在解决多个开发人员可能需要的特定需求。在编程(尤其是 OOP)的世界里,几乎没有什么是全面的。如果有的话,我们一开始就不必扩展我们的对象。在查看这样的工具时,请考虑它具体试图解决的需求。

有没有人为Android制作了一个更全面的网络对象?

是的。它们通常显示在您可以下载到设备的其他专用浏览器中。至于它们是否可以访问:就我个人而言,我不知道也不想看。

最后声明

您提出的问题确实不够具体,无法提供真正的解决方案。由于措辞不当,它似乎也采取了敌对立场。如果 CommonsWare 的回答或我自己的回答都没有解决您的问题,请考虑编辑您的问题以添加我们更具体的需求。也就是说,我希望我们的两个答案都能够为您提供一些见解。

希望这可以帮助,

模糊逻辑

于 2012-06-08T22:16:58.403 回答
9

恐怕这两个答案(Commonsware 和 Fuzzical Logic)都在回避现实。

根据我们为 iOS、Android 和 Windows Phone 开发 HTML5 网络应用程序和后来的 PhoneGap 应用程序(使用网络视图的混合)的两年经验,现实情况是:

在 iOS(Safari 和 WebView)上运行良好,在 Android 上的 Chrome、Windows 8 上的 IE 和 IE WebView(都有问题,但可以解决)中运行合理,但在 Android WebView 中仍然是一场噩梦

Android 中的WebView 已损坏,并且在将 KitKat 更新为 Chromium 后仍然损坏。它只是在普通的 HTML5 上崩溃(甚至没有遇到 Javascript 问题)。你会发现网上很多人都在观察类似的事情。

诸如“Flash 支持”之类的东西与此无关 - Flash 这不是 HTML5。制造商是否要支持某个插件(或者,在这种情况下,是整个中间件)取决于他。我一直理解 Apple 的决定,而在 WebView 中它确实更没有意义。

所以,这个问题是安卓/谷歌的问题,尽管这个平台的支持者想要否认它。对于一家一直喊着“开放”的公司来说,这当然尤其令人尴尬,但经过这么多年,却无法提供一个可以工作的 HTML5 浏览器组件。

但是您的问题是,如果其他人有任何其他 WebView:

好吧,我们很想听听一个。很抱歉,我们到现在也没有找到,原因可能正是上面提到的:实现起来非常困难,并且会依赖于硬件(硬件加速等)。然而,由于 Chrome 现在至少可以正常工作(经过这么多年......)我想知道 Chromium WebView 中缺乏类似质量是否是谷歌故意的,试图让人们远离制作出色的网络应用程序或混合应用程序。(与微软正在做的完全相反。)

于 2014-05-23T09:30:14.670 回答
1

我很惊讶没有人提到CocoonJS

它重新实现了标准的 WebView (Webview+);打包的 Webview,因此您的应用程序将在设备上始终如一地运行(尽管仅限于 Android 4+ 和 iOS 8+)。

WebGL 还有一个名为 Canvas+ 的环境,但它与 WebView+ 完全分离。这意味着您需要在 Canvas+ 之上覆盖 WebView+ 以同时显示 DOM 和画布。它们不共享同一个 JS 环境,但有一个消息系统用于在两者之间发送消息。

由于对操作系统的支持有限,CocoonJS 似乎不是一个好的生产级解决方案,但也许它会在未来出现。

还有人行横道。它适用于 Android 4+ 和 Tizen。

于 2015-01-14T16:46:49.417 回答
0

这非常接近题外话,请在其他地方发送您的咆哮-请某种“问题”。

有没有更好的安卓网页视图?

如果“webview”是指可嵌入的 Web 渲染引擎,可能不是,因为编写这样的引擎很难。您可以查看是否可以作为 Firefox Mobile 的分支使用。或者,欢迎您将自己的 WebKit 移植到 Android,使用 AOSP 版本作为起点。请注意,两者都可能会大大增加您的应用程序的大小。

谷歌自己的文件提到不要依赖 webview 对象。

请引用。

有没有人为Android制作了一个更全面的网络对象?

这将取决于一个人对“更全面的网络对象”的定义。值得注意的是,您忽略了为该短语提供任何类型的定义。

于 2012-06-08T21:11:47.500 回答