Android经验总结2013.12

| 分类 android  | 标签 Android  实例  总结 

一、Android学习过程

1.认识:

  • 认识选择开发android的原因,认识开发android的优势、魅力和前景。

2.入门:

  • 如果对java语言还不熟悉的,那就需要花些日子来学习java;弄清楚开发android应用的一个简单的过程和需要掌握的知识技术;

3.熟练:

  • 要想熟练,那就多交流、多实践、看官方文档、逛论坛、写一些简单的自定义控件和小项目……
  • 一般初学者需要掌握的基本内容:各基本组件的使用;各基本控件的布局和使用;异步操作、数据存储、图片的缓存机制、http网络服务、android项目开发的规范;

4.项目开发:

  • 开发一个完整的比较简单的android项目,如微信导航等;

5.积累:

  • 在项目开发的过程中,加强自己模块化的思想,积累更多属于自己的模块,建立自己的一些代码库;

6.提升:

  • 可以找系统自带的开源项目或者是一些开发者的开源大项目来研究,或者反编译一些常用的应用来研究,总结开发的思路、开发布局和开发框架;

7.进阶:

  • 深入研究和理解android的SDK实现的源代码;
  • 这个阶段是探索为什么的阶段,例如ListView控件是怎样实现的,为什么这样实现,有什么优缺点,还能怎样优化等;如View的测量和绘制过程,哪些方法起着至关重要的作用等;如进程间的通信机制、组件之间的通信机制等;又如一个应用是怎么运行起来的,运行过程是怎样的,为什么这样运行等等;

8.创造:

  • 自己去实现一些复杂的组件或者控件;只要你想得到界面效果,就能创造和实现;
  • 如自定义类似于TabActivity的组件、自己实现一个ListView、ScrollView、Gallery等较复杂但有趣的控件、善于使用ViewGroup的滚动属性和Touch事件,定义出各种滚动界面、善于使用View的一些Draw方法绘制出各种你想要的画面……

9.高级:

  • 就是所谓的高级内容:Android的内核框架、JNI、,openGL ES控件编程、Android移植编程……

10.扩展:

  • 理解JAVA相关的机制:虚拟机、JNI、垃圾回收、各种强弱引用的机制、进程线程的通信机制等;
  • 深刻理解一些网络协议,如http、socket以及其他一些常用的网络协议;
  • 应该至少要会一种服务端的语言,能够完整、快速地开发一个app应用,包括客户端和服务端;
  • 可以了解其他操作系统的一些开发细节,如IOS、Windows Phone等,了解这些操作系统的一些开发的原理、甚至可以借鉴它们的一些开发中的一些方便的东西和一些优化的原理;
  • 了解更多用户体验相关的设计;学会自己设计;

11.……

二、学习方法

  • 网上找文档、资料、视频学习;
  • 找一本内容丰富,带有一些小项目的书籍来阅读,如《Google Android SDK开发范例大全(第2版)》、《疯狂Android讲义》等;
  • 有选择地阅读Android官方的帮助文档;
  • 经常逛论坛:安卓巴士、eoe移动开发者社区、中国手机开发者联盟、开源中国的安卓开发专区;
  • 多交流、多实践,其中多实践是必须的,可以根据书中的一些例子自己进行实践;
  • 找一些开源的大项目来研究,,如wordpress for android,新浪(QQ)微博android客户端;如:http://www.oschina.net/project/tag/189/android?lang=0&os=189&sort=time&p=4
  • 反编译一些常用的应用来研究,如mobileQQ、微信等;
  • 查看android的SDK源代码,理解android系统控件的实现和优化方法;
  • ……

本人是一个先大局再细节的人,在学习上也是这样,我会首先大体上了解android的整个知识框架,花1-3天时间去学习,可以在网上找一些ppt、或者一些总结性的pdf文档来看,也可以找一些视频来看。当整体上有一个比较深的理解后就可以一步一步的深入细节去学习,这时候就可以看一些比较好的书籍。

都说我不只是看书,其实不仅在哪方面,学习的方法是多样的。当然,看书是一种很好的入门方法,但是一般书籍涵盖的都是一些基础知识,掌握了基础知识,只是初步的入门而已;要想学到更多知识,要想能够没难度地开发应用,那就需要其他的学习方法;本人总结了以上的一些学习方法,都是一些循序渐进的方法(仅供参考)。

三、开发环境

  • DK+ADK+IDE(eclipse)+ADT,建议使用Android Developers官网提供的ADT Bundle,这个是对ADK+IDE(eclipse)+ADT的软件的捆绑,并且是最新的ADK、IDE(eclipse)和ADT,并且IDE(eclipse)都是比较精简的,整个开发环境运行、自动构建、编译起来比各自去下载DK、IDE(eclipse)、ADT部署的开发环境各方面都快。
  • Android Studio,这个开发环境还是在测试阶段,期待正式版的发布,那时候就可以使用单一的、专用的开发环境了。
  • VirtualBox+android-x86,使用VirtualBox虚拟机安装android-x86系统,可以很快速地对android应用进行调试、测试。如果要让android-x86支持.so库,那就需要把C/C++代码通过NDK和JNI技术编译成x86平台的.so库就可以了。

四、开发难点

  1. 屏幕分辨率的兼容 图形资源对于不同分辨率的适配,在不同尺寸屏幕上使用不同的界面布局以优化操作体验。暂时的解决方案就是提供480px宽的和720px宽的两套图。
  2. 处理器、图形处理器规则的兼容 对不同性能的处理器都保证流畅度,3D程序对于不同厂商的图形处理器都能正确渲染等。现在还没有很好地考虑到这个问题,因为android设备太多,暂时只能测试到主流的一些机型。当然网上也有提供云测试这样的平台,大家可以尝试使用测试。
  3. 不同系统版本的兼容 有些在高版本中被引入的Android API在低版本中不被支持。如果要在低版本中使用,需要采用其他的实现方法进行兼容。
  4. 界面性能问题 界面的流畅度和操作性能直接影响用户的体验,所以就需要:理解View的绘制原理,在绘制方法中减少耗时操作;开启新的线程去做复杂处理,在UI线程更新界面;减少布局的嵌套、合理使用和去掉布局背景;Adapter中使用Holder;适当裁剪Bitmap。
  5. OOM问题 避免内存泄漏,主要是Context的泄漏;图片的二级缓存;合理使用软弱引用;裁剪或缩小图片;动态释放一些页面的内容;学会使用内存分析工具:MAT。
  6. 耗电和发热问题 后台线程或服务,要根据情况进入睡眠、阻塞或者退出状态。
  7. 保持程序的扩展性和架构的弹性问题 多交流、多看别人的优秀代码,学会总结。

五、Android实现功能时应该注意的事

  • 善于使用已有的代码:系统已提供的API、自己以前项目的库、别人项目的库;
  • 针对一个功能模块,先实现基本的功能和界面,对于界面、逻辑、功能细节的调整放到后面慢慢做;

六、注意事项

  • 请参考资料库的《Android项目开发注意事项》 ……
  • 一款应用只应该有一个签名,并且要保管好签名文件,策划和程序各一份保存;
  • 要区分好version Name和version Code,version Name 表示版本名称,是字符串,而version Code 表示版本号,是整型数字;version Code每次发布的时候都应该递增。

七、开源项目

  • 系统自带的开源项目:系统相机、系统图库、联系人等……
  • 一些比较好的完整开源项目:OS china、wordpress for android、Sipdroid、饭否、Zirco-browser、com.shejiaomao.maobo(社交猫)……
  • 一些比较好的开源控件、组件:android-wheel、android-swipelistview、OneXListview、actionbarsherlock、slidingmenu、android-viewbadger、wei.mark.standout……
  • 一些比较好的开源框架:ThinkAndroid、Afinal、cfuture-androidkit 、ormlite和Hessian……

八、一些建议

  • 要非常熟悉Android开发工具,这样子你才能在开发中灵活、方便、高效;
  • 对于一些比较私密的key-value键值对,善用md5对key进行加密,使用加密算法对value进行加密;
  • 好好研究SDK的一些重要控件的源码,学会对源码进行复制、裁剪和修改;
  • 要好好地理解touch事件的分派;
  • 学会使用draw9patch.bat工具;
  • 有空可以有目的性的反编译一些大型的项目,研究它的一些控件,或者框架的实现原理;
  • 要自觉去了解学习一门服务端语言,了解服务端的原理和机制;

PS:这个文档提供的只是一个学习的提纲,希望对项学习android的人有所帮助,如果想了解关于android开发的一些技术细节和技术心得,可以查看其他分享的博客。


上一篇     下一篇