毕业半年多的总结

         2014年七月从学校毕业来到珠海开始从事软件开发的工作,抛弃了相对自己来说最熟悉的C语言linux底层的开发,主动要求去做Android开发。在这之前没有任何Java基础和Android的相关知识,只是认为未来的一些智能设备都会用Android系统来跑。

        一开始分配网址导航APK的维护和界面的修改工作,由于没有Java基础所以看似一个简单的APK完全看不懂。花了差不多一个星期的时间简单过了一下《Java基础教程》和《Android从入门到精通》这两本电子书。Java学习到的主要内容有:Java的语法、Java简单的一些类的使用,String、Integer等等类的使用。Android学习到的主要内容有:四大组件、一些常用的ViewGroup和View的布局和使用方法,如何对系统自带的控件设置属性、设置监听等等。然后开始读网址导航应用的代码,由于没有文档,所以必须用笔和纸记录整个应用的主界面的加载过程,并且需要记录一些自定义控件的所对应的界面的哪一部分。这个过程大概花了三四天的时间对一个整体的应用的有了大概的了解(该应用只有一个主界面)。当了解了一个大概的时候都代码也就没有动力了,所以我就按照我了解的那个大概自己去动手写一个一样的应用,当出现细节不知道该怎么处理的时候再去读代码。这样下来一个持续了多星期的时间同时觉得这种方式学到的东西挺多的,比如Page的平移动画、SQLite的简单使用,最后当这个应用实现了大概百分之五十的样子,任务来了,UI设计师重新设计了整个界面。然后我根据UI设计师给的素材去更改整个界面,在这个过程实现比较顺利没有遇到很难缠的问题。现在回过头想想有两点原因:1、因为本来该应用的界面就不是很复杂。2、得益于我一开始实现了百分之五十的作用对这个应用细节也有了一定的了解了。

       开始了两三个星期左右的时间看书学习,在这个过程看完了《Android编程权威指南》,一开始觉得还是挺简单的,到了后来由于自己Java的薄弱导致看的很吃力,但还是坚持把这本书看完了。其中很多东西都是云里雾里,需要到时候去好好看看Java的设计模式之类的东西,在回来看这本书。这本书对我后来做项目产生了比较大的影响,全书把Fragment的使用体现的很完美,从其中所透露出来的就是用Activity只是负责管理Fragment的不是处理逻辑和界面的,逻辑和界面都放在不同的Fragment中处理,并且当Fragment有同样的功能时可以提取出来独立成一个Fragment的基类,Activity只负责管理的观点。由于意识到自己Java的薄弱,所以买了一本《Java编程思想》至今还在阅读中。

        接下来由两个毕业生一起去对AppMarket应用的维护和更改界面,这一部分我主要为AppMarket增加多任务下载等功能,原来的AppMarket只是多线程下载,每一个应用由五个线程同时下载,而且都是匿名线程。我在增加功能时只是在原来的基础上改成每一个任务开一个线程去下载然后由这个线程去启动五个线程进行同时下载。同时在暂停下载、取消下载、继续下载等功能上都是重新去new一个thread,导致后来有三个应用去下载时就出现卡顿的现象。利用这种方式去实现的时候后来出现了很多问题,但是又不知道去优化代码。比如:后来测试出来一个问题:当进入卸载页面进行卸载了应用时最后在退出应用时手动调用Finish()时,系统没有调用onDestroy()导致内存泄露。到现在也没有找到问题的所在,只是强制让它调用exit()。

        接下来同样也是我们两个菜鸟去重零开始开发一套android launcher的界面和部分的功能,我们的做法是每一个一二级菜单都用一个Activity去做,每一个三级菜单都用Fragment去实现功能,Activity只是负责加载具体的Fragment和管理Fragment之间数据的交互,但是这样每一个Fragment都有共同的部分。曾经我们讨论过就是共同的界面用Activity去加载,但是我当初的想法是认为这样耦合性太高,因为这样会增加Activity的负担而且可能Activity界面的数据需要与Fragment的数据交互增加Activity的负担。但是这样又代码复用性太低了。现在去想的话其实可以按照具体界面的功能去考虑是否是用Fragment加载部分的界面还是全部界面,而且对于相同的部分界面可以独立出一个Fragment的基类,这样就解决了代码复用性低的问题。不知各位博友怎么看?

       接下来的任务是为两个android launcher增加一些动画。在每个用GridView布局的界面增加页面切换是的平移动画以及焦点变化的平移动画。做法是:只要超过了一个页面的Item数目就增加一个GridView,这样就相当于页面切换时就是GridView的切换,然后每一个GridView放在自定义的ViewGroup。由自定义的ViewGroup去管理这个动画。这里遇到了一些问题,比如:在ViewGroup中调用addView的时候他没有调用onLayout方法去布局子View。后来发现是onLayout的函数复写有问题,这里不好表述就此略过。还有GridView的setSelection函数没有作用的问题也在做完之后找到了答案。再后来的时间通过去看老罗的博客对view和viewGroup绘制和重绘的一些流程有了一个大概的了解,但还是觉得他的博客研究的很深很多没看懂,需要以后去增加了知识和经验才能彻底读懂。

       最后的任务是再一个android launcher增加一个部分的功能和界面,界面不用说了已经轻车熟路了,主要是在功能上,以及师傅对我的要求是要把功能独立出另一个工程。这里的功能需要对一些数据进行封装成十六进制字节的形式通过串口发出去。这个过程感觉到C语言在这一部分比Java好处理多了,Java没有unsigned的类型的数据。在独立功能性的代码的时候总觉得耦合性太强,所以自我感觉独立的不是特别的好。这里还有一个疑问:当我用单列模式的时候,用到了Activity的Context变量是不是会导致Activity退出时无法回收而出现内存泄露的问题?我的想法是会的。

         希望2015年自己能慢慢接触到Android Framework的东西并且更改Android的Framework来进行ROM的深度定制。加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值