【问题标题】:What is your experience with Android webapps (limitations, tips, best practices)?您对 Android webapps 的体验如何(限制、提示、最佳实践)?
【发布时间】:2011-08-05 12:57:13
【问题描述】:

更新:

正如 François 所提到的,还有其他替代方法,例如 Phone Gap,可以实现更跨平台的方法。这确实是一个非常好的建议。 我愿意接受任何建议,如果我能从您的经验中学习,我将不胜感激。
旁注:仅限网络的应用在我的列表中并不高选项,因为我确实希望它出现在 android 市场上。

我即将开始将 facebook 应用程序移植到 android,我正在考虑是否应该将其编写为原生应用程序或作为美化 WebView 的包装器

您的体验如何?您在编写 web 应用程序时遇到了哪些限制?您有什么建议可以分享吗?也许您认为原生应用才是正确的选择?

为讨论建立一个名声,我现在要移植的应用程序很简单 fb 应用程序,其中服务器托管在 Google App Engine 中(用 Java 编写,如果重要的话),所有客户端代码都是 html、css 和 javascript(带有大量 jQuery)。

该应用程序基本上是一个二人回合制游戏,具有一组响应用户点击的静态图像,以及一个非常简单的聊天框(独立于 fb 聊天)。它可以为每个用户处理多个并发游戏(但对不同的对手,不一样)。

您认为它适合 Android 网络应用吗?

提前谢谢你。

PS1:无论如何,我将不胜感激任何见解,所以如果您想更广泛地回答,请不要将自己局限于这个特定的示例应用程序。

PS2:是的,我从 developer.android.com 阅读了“Web 应用程序的最佳实践”页面,并点击了那里的链接,但它并没有说明 WebView 组件的速度或可靠性,特别是在术语方面的用户交互。问题是在阅读了 WebView 描述页面中的以下段落之后,这对典型的场景有很大的限制:

使用的常见场景 WebView 很有帮助是当你想 提供您的信息 您可能需要的应用程序 更新,例如最终用户协议 或用户指南。在您的 Android 中 应用程序,您可以创建一个 包含 WebView 的 Activity,然后 用它来显示您的文档 这是在线托管的。

WebView 可以的另一种场景 帮助是您的应用程序是否提供 向始终需要的用户提供数据 要检索的 Internet 连接 数据,例如电子邮件。在这种情况下,您 可能会发现构建一个更容易 Android 应用程序中的 WebView 显示一个包含所有内容的网页 用户数据,而不是执行 网络请求,然后解析数据 并将其呈现在 Android 布局中。 相反,您可以设计一个网页 专为 Android 设备量身定制 然后在你的实现一个 WebView 加载 Web 的 Android 应用程序 页面。

【问题讨论】:

  • 感谢大家到目前为止的回答,希望这次能分红!

标签: javascript android web-applications cross-platform


【解决方案1】:

如果您使用 Javascript 制作动画,可能会发生一些奇怪的事情。

我使用 WebView 来显示图形,采用混合方法,有时会彻底失败,上面或下面的一行在代码逻辑中不应该出现时会有所不同...

混合方法,用 Javascript 调用 Java 方法,可以做到,但有时会很棘手。

就我个人而言,我的经验越来越少,我倾向于总是选择本地人。它速度更快,而且您不会遇到浏览器渲染中使用重定向或 javascript 时遇到的问题。

就我个人而言,如果我同时为多个平台(iOS、Android..)开发并且没有时间、资源或耐心为所有人开发原生,我只会使用非原生方法。

【讨论】:

  • 感谢您的意见!可靠性是我主要关心的问题之一。但是,另一方面,我确实希望它能够在尽可能多的类型的设备上,在最短的时间内。
【解决方案2】:

Appcelerator Titanium 是另一个选择,如果您正在考虑跨平台原生应用程序。

【讨论】:

  • 谢谢@Jacinda。我没有把 Appcelerator 带到这里也是因为这里还有另一个问题是处理 Phone-Gap 和 Titanium 之间的比较:stackoverflow.com/questions/1482586/…。如果您想分享,我想听听您的经验。
  • 我实际上并没有太多的个人经验,因为我倾向于在服务器端代码上做更多的工作,但听到使用它的同事的好评如潮。他们说这极大地加快了他们的开发时间。
【解决方案3】:

目前the Javascript interface is horribly broken in 2.3,因此您可能需要解决它。

除此之外,我不得不说,我对在本地创建复杂布局时发现的问题感到非常失望。有时我希望返回并在 WebView 中执行所有操作。

HTML+JS 开发的缺点是……它是 JS :)。您没有静态类型,因此在某些情况下调试可能会更难。 (哦,对了,还有OnConsoleMessage OnJsError and so on are horribly broken on some phones

【讨论】:

  • 谢谢@tacone。谈到可靠性……那个错误报告已经存在 5 个月了!显然令人沮丧!
【解决方案4】:

我已经实现了两个使用 webview 的项目,一个是使用 jqtouch,另一个是使用 jquery-mobile 框架。

您开始轻而易举地继续前进,但最后当您查看应用程序时,它与原生用户体验相去甚远。 Android浏览器比iphone浏览器慢得多。希望以后可以解决,因此在处理 css3 繁重的应用程序时响应时间会变慢。在模拟器中开发时,webview 会让人抓狂,因为它太慢了。

如果您想实现类似原生的元素或固定标签栏,那么您已经做了很多工作,当您将应用程序与原生应用程序进行比较时,最终没有得到一个好的解决方案,这很糟糕。

最后我决定学习原生开发并成为一等公民。当然这需要更多的时间,但结果会让我满意。

我认为原生开发不是未来,以后我们会再次编写 html-css-js 应用程序,它们会像原生代码一样工作,但在我看来不太可能在 2-3 年内。

我可以建议你,尝试构建 Web 应用程序,如果性能不能满足你喜欢我的要求,那就切换到原生开发。

【讨论】:

  • 很遗憾,我必须同意 :)
  • 感谢@Yekmer 的意见。我正在慢慢倾向于原生方法,但我还没有决定。 您对 jQuery mobile 的体验如何?由于我的 fb 应用程序现在使用了相当多的 JQuery,因此在 WebView 上也可以尝试一下。
  • jquery-mobile 很棒,John Resig 已经尽力了,超级简单,你只是在写 html,但是由于 css 不支持移动 webkit 中的固定值等限制,它不看起来像本地人。您可以从您的 android 中查看来自 jquerymobile.com 的所有演示。由于 android 浏览器中的缓慢 css 渲染时间,它再次变慢。由于它非常简单,并且适用于大多数手机,因此您应该学习并实施它,但在我看来,它仍然不能替代原生。
  • 我在 webview 应用程序中也遇到了不好的体验。 stackoverflow.com/q/23236400/2557900
  • 恕我直言,最终 IOS 将逐渐消失,我们将在 android 上进行设置。我认为java的寿命很长。可悲的是,Java 是一种可怕的语言。 c# 更加精致。
【解决方案5】:

在使用 WebView 之后,我发现它非常棒。我已经构建了一个应用程序并想将其移植到 Android,但当我意识到 WebView 可以完美运行时,我再也没有回头。我的所有功能都内置在 Web 应用程序中,因此应用程序中几乎不需要功能(互联网连接检测/更改等)

我走的是“混合”路线。我有一些您通过 Android 应用程序获得的网站不提供的精选功能 - 因此在营销时请记住这一点。

无论哪种方式,我唯一的问题是,当您使用 繁重的 CSS3 样式 时,滚动速度会卡顿 -- 我说的是边框半径、阴影、渐变等,全部结束。我想看看它是如何反应的……但是,是的,除此之外,你应该是金子!

祝你好运!

(编辑)添加了以下内容: 我还想添加我的应用在 WebView 中使用 jQuery。它似乎比原生动画更错综复杂,但这几乎是给定的。虽然不要误会我的意思,它们仍然是动画并且仍然很好用!如果我可以给 jQuery 动画 一个 FPS(向上/向下滑动),我会说它们大约是 20,而原生动画是流畅的 25-30(范围从 1-30) .引人注目,但不会从体验中带走任何东西。

再一次,不要误会我的意思,它非常好用!例如,我有一个计时器,它在页面加载和倒计时时启动......这在 App > WebView 中完美运行。没有错误,如果有错误,它会反映在网站上(又名 jQuerys 错误)

只是想在我的 2 美分上多加一些 =)

【讨论】:

  • 也感谢您的回复。与 NeTeInStEiN 截然不同的观点!如果我最终选择这条路线,我会考虑将样式保持在最低限度,但 20 fps 对我的应用来说应该足够了。
【解决方案6】:

我会按照这个偏好顺序选择这些规则

  • 如果您不需要限制为 android,则可以使用完整的网络
  • Phone Gap 如果您想要其他智能手机平台。
  • 如果您需要联系人、高级图形或任何原生组件,则完全原生
  • webview 如果您想进入市场并获得一些收益
  • 混合(原生与 webview)如果您想混合方法

【讨论】:

  • 感谢@Francois 的回复。您是否有任何可能想要分享的 webview 经验?我最感兴趣的是速度/可靠性与原生应用程序。还有,你用过Phone Gap吗?看起来真的很有趣。我也很想在 iPhone 上部署它,但我没有使用这些设备的经验。
  • Web 应用程序在速度较慢的设备上运行不佳,这些设备在我的大多数 Facebook 朋友中都很流行。您可以为您的应用程序打开一个 API,然后如果人们想要一个 iPhone 应用程序,他们可以制作一个!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 2016-01-09
  • 2019-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多