安卓开发技能树
界面实现UI
- 快速布局实现
- 从设计图、效果图中,快速拆分区块,确定每一区块用什么View实现
- 快速编写xml文件,实现静态效果图
- xml文件编写符合规范:缩进、dimen、color、string均抽取到values目录下的相应文件中
- 第三方库
- 系统控件无法满足需求时,能快速确定是否有合适的第三方库
- 屏幕适配
- 采用边距方式相对定位,而不是绝对坐标,大小的确定也要考虑屏幕大小
- 主流尺寸开发,其他尺寸发现bug后修复
- 处理手机屏幕旋转
- 高级/炫酷/复杂 视觉/交互效果的实现
界面实现功能
- 逻辑控制、数据处理、显示,三者分离(MVC/MVP)
- 异步处理,线程(RxAndroid)
动效
Material design
测试
性能优化
- 时间
- 数据处理、操作时间复杂度,不阻塞UI更新,不掉帧;
- 空间
- 内存使用优化,引用、内存管理,减小运行内存,避免内存泄漏;
架构
视野
安卓系统
Java
设计模式
Debug/解决问题
- 定位代码位置的能力:stacktrace分析,打log分析,traces分析,回滚测试,二分查找,去掉代码定位bug代码位置
- 定位代码位置后分析bug原因,并设计解决方案,尽量减小对其他部分的修改、影响
- 经验,遇到过的bug,同时能整理总结,遇到同样的bug能有印象
安卓开发者之间的区分点是什么?
- 代码质量
- 可读性,风格符合规范
- 可维护性,代码结构好,改bug不会因为改代码而头疼
- 可扩展性,开闭原则,后续加功能,通过增加模块/类来实现,而不是修改已有类,这样能降低修改引入的风险
- 可测试性,高测试覆盖,用测试用例保证代码逻辑质量
- TDD,真正的TDD,先有测试,再有实现
- 视野
- 经验
- 紧跟、引领技术潮流(视野+能力)