学习Android也一年多了,项目做了五六个,有大有小,有难有易。一直以来都没有好好总结过,今天周六休息,就写下这一年多从事Android以来的一些感想和小经验。涉及学习、项目和一些个人感受。
1.学习篇
我是从11年5月份开始接触并学习Android的,在那之前有过一年的J2EE的经验,做过三个J2EE的项目,从08年开始接触Java,所以到去年学习Android时,开发语言上我还是比较熟悉的,这也成了我为什么学习Android的一个理由。还有一个更重要的理由就是接下来的研究生学习中,Android也是我一个比较重要的方向,所以我选择在没开学前就开始自学Android。
我有一个学习癖好,我喜欢看视频去学,然后马上根据视频中讲到的东西去练习,然后反复去重复,刚开始可能不理解,但是在不断的重复中有两个好处,一个是对Android的使用熟悉了,还一个更重要的是在重复中逐渐对知识进行理解了。刚开始我的学习资料全部都是视频,加起来有好几十G,最先看的是Mars的学习视频,在网上是公认的对Android基础讲的比较不错的视频教程。我从第一集完整的看到了最后一集,里面的每个小例子都做了一遍,有的甚至还看了几遍,从最初对Activity的不理解到后来的轻车熟路,这是一个过程,学习的过程就是不断解决问题的过程,遇到困难不去逃避才是成功的最大保障。Mars的视频看完后我又看了一个专门讲Android小项目的视频(地址:http://www.verycd.com/topics/2847310/),讲这个视频的是个大学生,学Android比较早了,貌似也是湖南的(我是湖南益阳人),总共三个小项目,分别是通讯录、手机卫士、应用管理器,虽然都很小,但是对刚学过基础的我来说确实是一个比较不错的练手资料,我从头到尾的边学边做了一遍,然后又自己独立做了一遍,这一遍就加了自己的一些改动和延伸,虽然是做同样的事,但是第二遍的感觉跟第一遍完全不一样,从思想上去理解与从流程上去理解是完全不同的。这样,我的Android小项目就完成了,通过第二波的学习,我对Android的框架和基本使用就基本没问题了,收获到的经验就是:不断深入理解、重复、重复、再重复。不要觉得已经看过的知识点就已经理解了,其实随便一考,还是不会。所以,别给自己偷懒的机会,别停留在心里的舒适区域,不断挑战自己才能取得成功。下面贴出我最先完成的两个小项目的截图,很简单,但是是我的第一件作品:
上面这个是我做的第一个App,功能很简单,就是把当前手机中用户自己安装的应用全部列出来,然后可以在这里打开,卸载和查看详细信息的操作。功能简单,但是做完这个,对Android的使用已经有了初步的认识。
接下来我又做了第二个App,实现的功能是手机防盗,根据判断用户手机SIM卡的唯一序列号来进行识别,绑定安全号码后,如果手机的SIM卡被更换,就会再下次开机时自动发送一条短信给安全号码,信息的内容包括对方更换的SIM卡的电话号码和位置信息以及SIM卡的其他详细信息。界面截图如下:
做完这两个小项目以后,我开始了继续的学习,这次的目的主要是深化知识体系,深入了解Android框架的原理和使用,配合更多的练习和重复来强化自己的知识体系。还是一样,这段时间我又看了一套视频,是由Sundy讲的一套Android视频,这套视频的目的是结合Android源码来讲的,讲的比较深入,适合提高阶段来学习,同时,他也会配套一些练习,这套视频的讲授过程结合思维导图来进行,思维结构特别清晰,是一套非常不错的视频教程,有时间可以多看几遍。随后也看过传智播客黎活明老师讲的Android开发视频,感觉这位老师实力真的很强(台湾人,普通话不是很好),我有个同学在传智播客学过,说这位老师为人很低调,但实力非同一般,年薪100W+,也是传智播客的几位大牛级人物之一(这里没有广告嫌疑,只是顺便说说,嘿嘿)。关于视频部分,后来陆陆续续还看了几部,不过这期间以动手练习为主了,像以前讲微博客户端的那些我都看了一下,其实,那时(2011年7、8月左右)网上的Android视频还不是很多,经典的就更少,现在很多啦。与此同时,我开始关注像CSDN和开源中国等一类的技术博客,在上面寻找一些有用的学习资源,包括一些电子书和一些别人做的小Demo小教程,通过这些,可以了解别人的学习思路和过程,通过看电子书,可以更扎实的掌握Android的基础知识。后续我也陆续看过几本Android开发的书籍,这样可以更系统的了解知识体系,弥补了前期看视频的一闪而过。
期间还做过一个APP,这个我只负责界面制作,也是通过这个项目使我对布局和Android界面实现有了一个很大的进步,具体请看以前我写的AppTry项目经验谈
2.项目篇
到了这个阶段,研究生开学了,我也就进入了学校,开始了研究生的学习和生活,那个时候,我已经算有初步的Android开发经验和知识体系了,可以说走在了其他同学的前面,加上以前不算很久的J2EE经验,很快就被大家认可,并被选为我们学习组的组长,负责班上10个同学的Java基础辅导和Android辅导,那个时候每周我们都会找一个晚上聚在一起,首先我会跟大家讲一些Java基础知识,然后会讲一些Android最基础的内容,因为那个时候Android知识体系还不是特别健全,所以给大家讲Android基本都是入门级的,就这样,我们坚持了一个学期,为此,我还专门做了一个计划,内容基本涵盖了Android的初级知识体系,到最后也基本都讲完了,通过这段经历,使我对Android知识的理解又有了更深一层的认识,真正自己讲出来的和在脑子里理解的还是不一样,自己的永远是自己的,但讲出来给别人听,确实需要对知识理解的比较完整。在研一的第一个学期,我完成了从Android初学者到初中级Android开发者的转变,在此期间,通过两轮面试,我进入了北航爱立信联合实验室,直接进行Android项目的开发工作。
进入爱立信实验室后,导师分配给我们每个人一个项目,那时只是个很抽象的概念,一个名字和一些简单的描述,然后我们就开始做。我做的是一款名片类应用,到现在为止,我还在做这款应用,这款App已经经过了几个版本的迭代,功能也是越来越全面,现在,这个项目已经成了实验室的重点项目,人员也从最初的我一个人,到现在由我带领的一个五人团队,有Android开发、有UI/UX、根据功能,我们后续又增加了服务端开发、IOS版开发。到现在,我们仍然会继续把这个项目做好做大。这里贴出来目前最新版本的截图,不足之处,还望大家见谅,哈哈
现在这款应用已经在Google Play上发布了最新版,名字叫CardBox,这个软件从最初的构思、设计、实现基本上是由我一个人完成的,后续组成团队后,也有团队成员的共同努力,感兴趣的朋友可以去下载试用,给出评价意见供我们改进那就再感谢不过了,呵呵。
附上Google Play上的下载地址:CardBox下载地址
接下来继续讲我的Android学习之旅吧!
在此期间,我又陆续做了几个项目,一个是学校课程的项目,也是由我带一个组进行设计和开发,这个项目是一个移动图书馆,我们自己利用J2EE技术做了服务端,然后用Android做客户端,功能很简单,但是这个项目让我们的团队成员都发挥了各自的能力,分工明确,大家一同努力的感觉很好。同样附上这个项目的几个截图:
这个项目我们主要实现了登陆和书籍查询的功能,同时用到了科大讯飞提供的语音查询API,这也是我们的特色之一,另外就是支持把自己感兴趣的书籍分享到SNS平台,分享这一块我们用的是友盟提供的SDK,目前支持新浪、腾讯、人人网分享。这个项目我主要负责项目的统筹管理、Android端设计以及基本实现,我们的分工是我负责移动端设计开发,另外两名同学协助我,一名同学负责需求分析与文档整理,两名同学负责服务端,这样下来,到最后答辩的时候,我们的效果还是不错的,呵呵!
到这里,我的Android知识面相比最初开始学习时,已经丰富了很多,当然,开发的过程中会遇到很多问题,包括不会的知识点,包括bug等,对于新知识点,我一直认为不断的学习非常重要,不能因为一个点不会就放弃或找别的方法,如果这是最优方案,那就一定要去学。关于开发中的bug,做软件开发都不可避免遇到这个问题,沉下心来,仔细分析、不浮躁,问题总会解决,我对bug的看法就是这是一个重新审视自己写的代码的机会,从中会收获很多。
接下来,通过朋友的介绍,我接了一个外包项目,这是我第一次接项目来做,项目是一个手机连锁的移动终端,有服务端支持,我负责Android端的实现,整个项目由我一人负责,同时我也找了一个同学来协助我。这个项目是我目前做的最大的一个Android项目了,它涉及三个权限,功能覆盖定位、网络操作、数据解析、存储、通知、服务、下载、广播和与服务端的轮询,涉及的知识点比较多,时间持续了两个多月,代码总共2万5千多行,当然这个项目是有报酬的,具体多少我就不说了,呵呵,但是是我目前自己赚到的数量最多的一次了,包括现在这个项目还在由我自己维护。通过这个项目真的学到了很多很多,一方面是对Android知识的学习和真正的运用,还有就是参与这种真实的商业项目开发所接触到学校所不能接触的东西,包括团队协作、管理等。在服务端与客户端接口设计那段时间,真的是非常头疼,光接口我们就开了不少会,接口版本就改了十几版,期间功能也不断更新、移动端界面也不断在改,很庆幸,这个项目我们顺利的做下来了,项目团队中我最小,负责服务端的都是有十来年开发经验的人,和他们比我真是小巫见大巫了,但真的学到了不少。这里我就不贴界面截图了,因为涉及商业机密,因为这个项目是他们集团内部使用的一个项目。
最后我要介绍的一个我参与过的项目也是一个商业项目,这是一个公益平台,由我们实验室的几个人接的一个活,我主要负责项目的界面实现以及几个小功能的实现,这个项目我接触到了一个比较正规的项目架构,带我们做这个项目的是以前百度出来的一个人,他现在自己在和朋友开公司,通过朋友介绍,安排了一个项目给我们做,我们也把这个当做一个机会,以练习为主,主要学习到了一个优秀的Android项目架构,学习了一些平常我们不用的只是,比如Monkey测试,这个在以前我就没用过,包括局部调试,以往调试都是把项目全部运行一次,用了局部调试,真的是省时省力。这里我贴一个那时我们还在开发中的一个截图,大家看看就行,基本功能类似微博,服务端是由他们自己做的,把各大微博平台的数据收集起来到这里展示,大部分功能都类似微博:
3.心态篇
不管做什么,好心态永远是最重要的,像IT行业,更新快、竞争大。我们无法时时刻刻保持自己在最新状态,所以,要保持一个好心态,不断学习的同时要把生活过好、把身体锻炼好,本来身处这个累心累身的行业,尤其要注意这点,对自己好点,别跟自己过不去,有难题,先放放,整理思路,调整心态,大不了重新出发。同时,也要坚持,坚持自己的原则、坚持自己的梦想,踏实的走好每一步,辉煌总将来临。平时多发现生活的美好,和朋友多聊聊,和家人多沟通,提高自己的生活品味,过好每一天,体验每一天。工作、学习、生活三者平衡,把这些做好,我们的人生一定很美好,不求完美,但求充实。
以上就是我学习Android的一些精力和一些做过的项目,还做了一些其他的小App,这里就不一一列举了,通过这些项目,一方面是让我对Android开发有了深入的理解,另一面是对团队协作重要性的认识,自身再强大,如果没有一个团队的支持,那是无法取得最大的成功的。所以,现在我全身心投入实验室的项目,希望我们这个团队能把事做好,把团队做好,把项目做好。我想,明年初,我们会交出一份满意的答卷。学习无止境,永远有一颗向上的心很重要,永远不要对自己满足,永远不要安于现状、永远相信自己的潜能无限大,做好人,做好事,成功离我们很近。
没想到我写的这篇分享得到了这么多人的肯定和关注,特别感谢大家鼓励的话语,着实给我增添了很多信心,希望和大家多交流、多分享,一同成长,也希望大家多提意见。我将继续将我的学习分享进行下去,希望能给后来者以参考,也希望前辈能给出指导!最近我在学习IOS,我会将自己的学习笔记分享在BLOG中,另外也会经常更新Android后续学习的一些笔记(主要以官方文档为主),希望大家继续关注,并给出宝贵意见!谢谢大家!
作者:唐韧_Ryan