你有什么经验与Android的webapps(限制,技巧,最佳实践)?

更新:

正如弗朗索瓦(François)提到的那样,还有其他的select,例如Phone Gap,以获得更多的跨平台的方法。 这确实是一个很好的build议。 我愿意接受任何build议,如果我能从您的经验中学习,我将不胜感激。
旁注 :一个networking应用程序在我的选项列表不高,因为我确实希望它在Android市场上。


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

你的经历如何? 在编写webapp时,你会遇到什么样的限制 ? 你有什么build议,你可能想分享? 也许你认为一个本地的应用程序是去的方式呢?

为了build立一个讨论的名气,我现在想要移植的应用程序是一个简单的fb应用程序,其中服务器托pipe在Google App Engine中(如果有问题,用Java编写),所有的客户端代码都是html ,CSS和JavaScript(有很多的jQuery)。

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

你认为适合Android的webapp

先谢谢你。

PS1:无论如何,我会感谢任何见解,所以请不要限制自己这个特定的示例应用程序,如果你想在你的答案更广泛。

PS2:是的,我从developer.android.com上阅读了“Web Apps的最佳实践”页面,我跟随了那里的链接,但没有多说WebView组件的速度或可靠性,特别是在用户交互。 在阅读WebView描述页面中的以下段落之后,问题出现了,这种情况对于典型的场景有一些限制:

使用WebView的一个常见scheme是帮助您在应用程序中提供可能需要更新的信息,例如最终用户协议或用户指南。 在您的Android应用程序中,您可以创build一个包含WebView的Activity,然后使用它显示在线托pipe的文档。

WebView可以提供帮助的另一种情况是,如果您的应用程序向用户提供始终需要Internet连接来检索数据(如电子邮件)的数据。 在这种情况下,您可能会发现在您的Android应用程序中构buildWebView会更容易,该Web应用程序显示包含所有用户数据的网页,而不是执行networking请求,然后parsing数据并将其呈现在Android布局中。 相反,您可以devise针对Android设备的网页,然后在加载网页的Android应用程序中实现WebView。

Solutions Collecting From Web of "你有什么经验与Android的webapps(限制,技巧,最佳实践)?"

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

你开始像一个微风,继续下去,但最终当你看到应用程序,这是非常原始的用户体验。 Android浏览器比iPhone浏览器慢得多。 希望稍后解决,因此当您处理css3重度应用程序时,您的响应时间会更慢。 在模拟器中开发时,webview会让你发疯,因为它太慢了。

如果你想实现原生类似的元素或固定的tabbar,你正在做很多工作,最后在把你的应用程序和原生应用程序进行比较时,得不到一个很好的解决scheme,这真是太糟糕了。

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

我认为本土开发不是未来,有时候我们会再次编写html-css-js应用程序,它们将像本地代码一样工作,但根据我的观点,这不会在2-3年内。

我可以build议你,尝试构buildWeb应用程序,如果性能不能满足你,像我一样,然后切换到本地开发。

我会select这个优先顺序的规则

  • 完整的网页,如果你不需要限制到Android
  • 手机差距,如果你想其他智能手机平台。
  • 如果您需要联系人,高graphics或任何本地组件,则完全本地化
  • networking视图,如果你想在市场上,也许获得一些钱
  • 混合(原生与webview),如果你想混合的方法

在使用WebView的经验之后,我发现它太棒了。 我已经构build了一个应用程序,并希望将其移植到Android,但第二个我意识到WebView工作完美无缺,我从来没有回头。 我的所有function都内置在Web应用程序中,因此在应用程序中几乎不需要function( Internet连接检测/更改等)

我走了“ 混合 ”路线。 我有一些您通过Android应用程序获得的特定function(网站不提供这些function),请牢记市场营销。

无论哪种方式,我唯一的问题是滚动速度可以结束,当你使用沉重的CSS3造型 – 而我说边界半径,阴影,渐变等等,全部。 我想看看它是如何回应的…但是,除此之外,你应该是金!

祝你好运!

(编辑)添加了以下内容:我也想添加我的应用程序在WebView中使用jQuery 。 它似乎错过了一个本地的animation会,但这是非常多的一个给定的。 虽然不要误解我的意思,但他们仍然是animation,仍然很棒! 如果我可以给jQueryanimation一个FPS(向上/向下滑动),我会说他们大约20,而本地animationstream动25-30(从1-30的比例)。 值得注意的是,但并没有带走任何经验。

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

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

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

我已经使用WebView来显示graphics,有混合的方法,有时地狱会丢失,上面或下面的线条有所不同,当它不应该在代码逻辑中…

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

就我个人而言,我倾向于尊重自己。 这是更快,你没有问题,你有一个浏览器呈现redirect或JavaScript。

就我个人而言,如果我正在同时开发多个平台(iOS,Android …),并没有时间,资源或者便利性来开发本地应用程序,我只能使用非本地方法。

目前的JavaScript界面​​在2.3中被破坏得很厉害 ,所以你可能需要解决它。

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

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

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