您对Android webapps的体验是什么(限制,提示,最佳实践)?

更新:

正如弗朗索瓦所提到的,有一些替代方案,如Phone Gap,可以采用更加跨平台的方法。 这确实是一个非常好的建议。 我愿意接受任何建议,如果我能从你的经验中学习,我将非常感激。
旁注 :我的选项列表中只有一个仅限网络的应用程序,因为我确实希望它在Android市场上。


我即将开始将一个Facebook应用程序移植到android上, 我正在讨论是否应该将其作为本机应用程序或作为美化WebView的包装器来编写

你的经历如何? 在编写webapp时你遇到了什么限制 ? 你有什么建议可以分享吗? 也许您认为本机应用程序是另一种方式?

要为讨论设置一个famework,我想要移植的应用程序是一个简单的fb应用程序,其中服务器托管在Google App Engine中(用Java编写,如果这很重要),并且所有客户端代码都是html ,css和javascript(有大量的jQuery)。

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

你认为它是否适合Android webapp

先谢谢你。

PS1:无论如何,我会很感激任何洞察力,所以如果你想在答案中更广泛,请不要局限于这个特定的示例应用程序。

PS2:是的,我从developer.android.com上阅读了“Web应用程序的最佳实践”页面,我按照那里的链接进行了操作,但它没有说明WebView组件的速度或可靠性,特别是在用户交互方面。 在阅读WebView描述页面中的以下段落之后出现了这个问题,这种方式限制了典型的场景:

使用WebView的常见方案是,您希望在应用程序中提供可能需要更新的信息,例如最终用户协议或用户指南。 在Android应用程序中,您可以创建包含WebView的Activity,然后使用它来显示在线托管的文档。

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

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

您开始轻而易举,但最后当您查看应用程序时,它与本机用户体验相差甚远。 Android浏览器比iphone浏览器慢得多。 希望以后能够解决,因此当你处理css3繁重的应用程序时,你的响应时间会变慢。 在模拟器中进行开发时,webview会让你发疯,因为它太慢了。

如果你想要实现原生的类似元素或固定的tabbar你工作了很多,并且在你的应用程序与本机应用程序进行比较时最终没有得到一个好的解决方案,那就太糟糕了。

最后,我决定学习本土发展,成为一流的公民。 当然这将花费更多的时间,但结果将满足我。

我认为本机开发不是未来,稍后我们会再次编写html-css-js应用程序,它们将像本机代码一样工作,但根据我的观点,它不可能在2 – 3年内完成。

我可以建议你,尝试构建网络应用程序,如果性能不能像我一样满足你,那么切换到本机开发。

我会根据这个偏好顺序选择这些规则

  • 完整的网络,如果你不需要限制到Android
  • 如果您想要其他智能手机平台,请拨打电话 。
  • 完整原生,如果您需要联系人,高图形或任何本机组件
  • webview如果你想进入市场并且可能获得一些收益
  • 混合(与webview本机)如果你想混合方法

根据我对WebView的经验,我发现它太棒了。 我已经构建了一个应用程序,并希望将其移植到Android,但第二个我意识到WebView工作正常,我从未回头。 我的所有function都内置在Web App中,因此在应用程序中几乎不需要function( Internet连接检测/更改等)

我走了’ 混合 ‘路线。 我有一些精选的function,你可以通过网站没有提供的Android应用程序获得 – 所以请记住这一点进行营销。

无论哪种方式,我唯一的问题是当您使用沉重的CSS3样式时滚动速度可能会断断续续 – 我正在谈论边界半径’,阴影,渐变等等。 我想知道它是如何回应的…但是,除此之外,你应该是金色的!

祝你好运!

(编辑)添加以下内容:我还想添加我的应用程序在WebView中使用jQuery 。 它看起来比原生animation更多,但这几乎是给定的。 虽然不要误会我的意思,但它们仍然是animation,仍然很棒! 如果我能给jQueryanimation一个FPS(向上/向下滑动),我会说它们大概是20,而原生animation是25-30流量(从1-30开始)。 值得注意的,但不会带走任何经验。

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

只想添加更多我的2美分=)

如果你有使用Javascript的animation,可能会发生一些奇怪的事情。

我使用了一个WebView来显示图形,有一个混合的方法,有时候会失败,上面的一行或下面的代码在代码逻辑中不应该有差别…

使用Javascript调用Java方法的混合方法可以完成,但有时候很棘手。

就个人而言,我的经验减少,我倾向于总是原生的。 它更快,你没有在浏览器渲染中使用重定向或javascript的问题。

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

目前,Javascript界面​​在2.3中被严重破坏 ,因此您可能需要解决它。

除此之外,我不得不说我对在本地创建复杂布局时遇到的问题感到非常失望。 有时我希望回去在WebView中做所有事情。

HTML + JS开发的缺点是……它是JS :)。 您没有静态types,因此在某些情况下调试可能会更困难。 (哦,顺便说一下, OnConsoleMessage OnJsError等等在某些手机上可怕地被打破 )

如果您正在考虑跨平台本机应用程序, Appcelerator Titanium是另一种选择。