从我入职新公司以来我就开始接手了这个项目相传之前就搞了半年了,然而直到上周末10.13才终于把这个case结了。我来总结一下之前的框架结构。
今天搞了半天的UML图发现三种方式:
分别是androidstudio下的插件
1.simpleUMLCE 虽然可以快速根据类生成uml图并能到处图片 但字好像很小不知道有没有地方设置。下面那张图就是这么生成的
2.PlantUml 也是一个插件需要自己写一些语法来生成 可以利用structure将里面的内容复制进行快速生成。但是是要配置Graphviz2.38这个工具一起使用的 自行百度下载
3.uml一些客户端专业绘画工具 visio等都可以。
好的 废话不多说 进入正题我们来看下我接手时的项目结构
字很小,一会细说,总的来说就是写了一个base然后各个界面来继承他的传统模式。但是!
传统base里面我们通常是封装一些公共的方法以及出事话某些控件。这个onnewintent中再setintent我是实在没看懂。由于是双屏显示,所以他在base里面去生成第二屏幕的控制类,但是酱紫每生成一个activity就对应get一次 总感觉这feel不对啊。
同时还注册了evetntbus进行事件接收来更改第二屏幕 由于第二屏幕有两种界面展示的情况他直接又新建了一个出来,好像确实能解决问题。
再来看通信,采用的netty框架进行长连接进行数据传输,所有的数据处理全在以下这个类,关于netty通信的今天发现了几篇文章有空的时候可以好好研究下:
http://www.jianshu.com/p/c15daca6e381
http://www.jianshu.com/p/128ddc36e713
某些方法要用到context例如获取版本后 直接传入activity,我觉得是挺容易造成内存泄露导致activity不能被回收的。同时为了打开一个页面他是怎么做的呢?
没错他在activity中加入一个静态方法来进行打开自身页面,虽然不知道这种做法对不对,但是总感觉怪怪的。而且简单粗暴地通过这种方式直接传递参数也是棒棒的。
再来看逻辑处理:
一个MainActivity里面包含了几乎所有的逻辑处理,可能还觉得集中处理的挺不错的,但我维护起来何其蛋疼,报道刷卡的逻辑为什么会在Main里,副屏更换名字刚才不是在base里面的么怎么这边又出现了?what the fuck。
再来看数据存储,constant里面存了一堆 share里面也存了一堆有的时候真的不是太清楚这里面复杂错综的关系。
当时老板跟我说只要简单修改,一些字啊字体颜色 背景换换就行,我想那简单啊现在想想真是too young too simple。