项目:
这一年,写了3个项目,全是o2o的app,1个外包,2个自己公司项目.
技术上来说,没有多少难点,但还是碰到过一些疑难杂症.
本来有个小伙伴,年中的时候第一个项目做完被ko了,然后就成独苗咯(\_/)
学习到的东西:
1.mvp
2.rxjava
3.retrofit
4.接触了几个设计模式:策略,单例,组合,builder,工厂,抽象工厂,适配器,装饰.
代码开始考虑使用什么样的设计模式去抽取封装.
5.一些控件开源库(感觉没什么意义).
6.通过ViewDragHelper对自定义控件有了基本的认识.
7.开始注重性能优化,代码的规范,美观.
8.fragment的大量使用,对fragment的一些操作和处理.
9.年中的时候开始翻看源码,知道了很多问题的起因.
10.开始想要将碰到的问题,学习的东西记录下来.
11.不再随便的去使用别人的开源库,开始考虑性能,大小,稳定性,实用性.
12.自己折腾了几个bug一堆,有待优化的控件- -.
13.开始使用5.0的新控件,Recyclerview从最开始的摸索使用,到现在的轻车熟路.
看的书:
<Android源码设计>
<Android开发艺术探索>
碰到的问题:
1.华为手机设置透明状态栏(emui3.1不起作用)
公司没有测试机,一直用自己的,而我当时的手机是华为4a(便宜货)
发现在style里面设置colorPrimary,colorPrimaryDark不起作用
想要出沉浸效果只能设置全屏模式
然后就碰到了第2个坑.
2.在全屏模式下,软键盘弹出webview无法上推造成遮挡,这个bug当初折腾了很久.
原因是在全屏模式下,软键盘弹出不会触发onSizeChanged().
怎么解决,我的建议还是不要设置windowTranslucentStatus,会有很多问题
如果实在要这样设置
AndroidBug5497Workaround,可以搜一下这个类.
部分需要全屏的页面,比如启动页,可以用代码设置window.
3.application类保存全局变量.
这个坑碰到的比较早,是app上线后,通过统计发现的.
原因是,app在后台时会被杀掉,内存不足会回收一些对象,回到前台时会重启,保存的一些静态变量就被初始化了.也就不存在保存一说了.
共享的数据推荐shareprface保存,或者存到磁盘上.
当前页面的数据完全可以用bundle保存.
4.RecyclerView的增删改操作
由于RecyclerView自带没有点击事件,所以自己就写接口实现,但是会有个问题,就是bindviewholder里面的position是不准确的,应该使用ViewHolder的getLayoutPosition方法来获取item的角标.这个在源码里面有解释.
5 一些内存泄漏的坑
有点多.....说个比较烦的,InputMethodManager引起的内存泄漏,这个是系统级的bug.但leakcanary工具总是提示,然而这个泄漏其实没什么影响,看了内存监测,回收完全正常.
还有很多坑,就是使用开源库碰到的了...
我想说,如果你自己都没测试好,就不要把东西传上去<推荐>别人使用.即使传上去了也应该提醒一下待完善嘛.- -
6 自己曾经的项目
最近开始迭代很久以前公司就丢在一边的一个项目
感到绝望- -.还好,看得懂,不算很毒.就是封装的太差了.有得忙了
想一想,以后再看自己现在写的项目,是不是还是这个感觉呢.哈哈
纠结的地方
一个人开发有时候还是有心无力.
简单的非体力代码会浪费时间.没时间去学习新技术.
技术完全自学,效率低.
对于app架构的设计,封装,经验不足.边写边改.
copy过多的后遗症,很多时候即使知道,也还是得去搜一下copy代码.
新年的学习目标
c艹,ndk,源码.把2本书啃完.组件化,插件化
计划赶不上变化,学到的东西可能会更多吧.- -