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

Ale*_*dam 21 javascript android cross-platform web-applications

更新:

正如弗朗索瓦所提到的,有一些替代方案,如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.

Yek*_*sek 13

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

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

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

最后,我决定学习本土发展,成为一流的公民.当然这需要更多的时间,但结果会让我满意.

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

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

  • Jquery-mobile非常棒,John Resig已经做到了最好,它非常简单,你只是在编写html,但由于css不支持移动webkit中的固定值等限制,它看起来不像本机.你可以从你的android上看到来自jquerymobile.com的所有演示.由于在android浏览器中缓慢的css渲染时间,它再次变慢.由于它非常简单,并且适用于大多数手机,因此您应该学习并实施它,但在我看来,它还不能替代本机. (2认同)

Fra*_*ier 10

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

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


Xez*_*uka 6

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

我走了' 混合 '路线.我有一些您通过Android应用程序获得的功能,该网站没有提供 - 所以请记住这一点进行营销.

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

祝好运!

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

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

只是想增加一些我的2美分=)


net*_*ein 5

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

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

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

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

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