学习借鉴自:http://blog.csdn.net/heruijun/article/details/20375075

大家好,今天我给大家介绍一款用HTML5来实现Android的应用程序开发的开源项目,Phonegap!

一提到这个项目,可能很多人早有耳闻,而且也能说出大概,对Phonegap批评声我看过也不少,主要是说其性能慢,其实我觉得不然,Phonegap还是很管用的,如果写出来的应用执行慢,大部分应该是代码本身的问题,稍后我们来谈谈如何进行性能优化,首先,我先简单介绍一下:

方法网站:http://phonegap.com/

如果你对源码感兴趣,可以去apache下载开源项目Codova(Phonegap后来改名为了Codova),源码我就不分析了,有兴趣可以看一下,简而言之,就是对Webview的一层封装,早期的Phonegap扩展性不是很好,不能无缝集成到Activity或者Fragment里,自从Phonegap 1.8之后,开始有了这个功能,大家可以去官方看一下API,如果整个应用全部用HTML5实现,那么纯HTML和JS就能搞定,但是有时必须得用Android里面的API,JS无法实现并且官方也没提供默认插件时呢, 那就得自定义了,Phonegap扩展了js方法,可以把行为传递给其扩展的Plugin的java类,在该类里面可以做一些操作,比如Activity跳转或者发送广播等等,这块的话,网上有很多资料,感兴趣的话大家可以去看看别的博主的文章就会了解,我这边就不细说了。

以上这些是我的一些个人理解,网上其他作者可能说的更详细,我就不去重复了,下面来谈谈我几个项目做下来一些性能优化的经验:

1.资源本地话,如果可能,尽量把图片和JS文件放到assets目录,这样就减少了网络请求,提升了性能,还可以把多张图片拼成1张图片,用CSS背景偏移去实现界面,这样减少了图片数量。

2.使用HTML5的SPA模式。这个需要简单介绍一下,就是把整个APP放在一个HTML里面,通过显示隐藏来展现给用户看,这方面,jquery mobile和Sencha Touch都做到了,而且还有自己的转场效果。如果不是SPA模式,那么在整个页面切换时可能出现屏幕闪烁或停顿,用户体验很差。

3.尽量不用jquery mobile和Sencha Touch这2个框架。这2个框架我都用过,Sencha Touch性能方面明显快于jquery mobile,已经无限接近原生实现,至于jquery mobile为什么慢,归功于需要引入jquery的库文件,而jquery的库文件很多是处理PC端IE浏览器的兼容性问题,移动端完全用不到,这里推荐一下jquery 2.0,这个版本是专门为手机打造的,或者你也可以用zepto来实现,zepto体积很小,淘宝网触屏版就是用的这个库,至于Sencha Touch,我的感觉像搭积木,一段时间不用又忘了,但是性能还是不错的。

4.对js功底的培养。开发者应当充分了解javascript语言特性,这个需要一定的积累,如原型,原型链,闭包,构造函数,语法糖,正则,JS常用设计模式有一定了解,如果JS太糟,写出来的应用肯对快不了,就别去怪Phonegap啦。

5.尽量使用CSS3动画,虽然JS能实现,但是有些浏览器内核本身会对CSS3进行优化,如果一个效果都能实现,那么建议你用CSS3。


今天就总结到这里吧,个人感觉Iphone上运行的phonegap应用明显快于Android,好像是几倍吧,总结方面如果有遗漏欢迎大家补充。


更多相关文章

  1. Android逐帧动画的简单使用-语音播放效果的实现
  2. 我的Android进阶之旅------>Android(安卓)关于arm64-v8a、armeab
  3. Android技术博文汇总
  4. 长文【Android模糊图片处理】
  5. Android(安卓)Studio—— 关于在Android(安卓)Studio中使用Asset
  6. Android(安卓)Studio第二期 - 短信自动填写项目流程讲解
  7. Android图片压缩质量参数Bitmap.Config RGB_565、 ARGB_8888的含
  8. Android(安卓)AIDL入门例子
  9. android中selector在java代码中使用无效的解决方案

随机推荐

  1. Android 沉浸式状态栏实现,以及遇到的问题
  2. android的四大组件及其生命周期
  3. Android(安卓)获取设备和系统信息
  4. Android开发前奏
  5. Android(安卓)百度地图蓝点定位
  6. android ndk环境配置
  7. android 永远锁屏解决方法
  8. TensorFlow Android demo
  9. Android EditText输入限制最大字符长度
  10. Android】获取Mac地址