一. UI及交互
Android开发者最表面的本职工作的是视觉及交互实现.着重提高以下几种技巧:
1. 自定义View.
通常限于xml配置的束缚,需要通过自定义View实现视觉的灵活性和通用性.
2. 熟悉Touch事件的分发流程
交互有一部分是与手势相关的,比如页面下拉会触发刷新或关闭或隐藏bar等操作,只要掌握Touch分发流程,结合官方提供的ViewDragHelper等工具就更能得心应手.
3. 参考第三方实现
Github上很多通用组件TabLayout,MaterailDialog等都有功能和设计比较好的第三方实现,可参考进行二次加工.
二. 基础框架
任何框架都是加在原生代码上的一层封装,为了让代码可扩展,易维护,框架侵入到了APP的各种技术栈.注重以下几方面:
1. 跟从google android团队的指导
google官方大力推荐的architecture架构,kotlin语言,ConstraintLayout布局等等,一定会成为主流.所以开发者尽量去学习并理解
2. 跟紧主流框架
团队进行技术选型的时候大部分会参考几个成熟的框架.
模型: mvp的干净架构或google官方推荐的mvvm
依赖注入框架: 选择Dagger&Dagger Android
网络: 选择Retrofit+OkHttp3
事件响应驱动方案: 选择响应式编程RxJava&Rxandroid
本地持久化: 选择google官方的Room,或者jakewharton大神的disklrucache
日志打点: 选择timber
3. 探索黑科技
a. Hybrid混合开发
Native混合H5开发是常见的APP策略.
简单点可以只使用JsBridge进行通信.
为了符合"一次开发,全平台可用",可选择facebook的react native,阿里的weex,google新出的flutter等等.
b. 热修复
动态的代码发布及修复方案确实是挺吸引的点.可参考此文章Android热修复主流框架调研
c. 插件化
复杂项目需要考虑以模块的形式动态加载所需的功能.可参考此文章Android插件化RePlugin探索
很多方案都在尝试赋予传统app一些额外的功能.
三. 内功
内行看门道,不想被鄙视就好好夯实基础吧.
1. Java/Kotlin基础
Jvm, java的特性(泛型/注解等), 数据结构等,看看深入理解Java虚拟机 系列文章没错的.
2. 设计模式
看看JAVA设计模式-HeadFirst讲解没错的
3. android源码
看看Binder,WindowManager等实现,遇到兼容性或底层问题时就不会没有思路了.
四. 程序员思维
程序员生涯里,总会慢慢意识到程序员这个工种本身就有一些特性:
1. 打好基本功
作为一个快转到后台的程序员,不管是哪一个技术路线,都需要夯实基本功,基本功会体现在日常80%的工作上.
2. 优化代码
总要挤出时间做优化.代码的优化是永无止境的.推动技术进步有两点:
a. 业务: 业务的复杂度会趋势程序员去设计高可用,易维护的代码.
b. 进取心: 所有繁琐,不可用的代码都可以依靠新技术新架构(使用注解,中间层,设计模式等)去抽象和优化.高要求会促使你阅读英文,积累技术博客等的.
3. 端正程序员的思维
保持好奇心,对循规蹈矩的流程保持质疑.
相信技术能力,相信自己能够通过探索解决问题.
代码不是看重写的多复杂,而是写的多简洁优雅.
在做任何需求时,想好思路后,需要仔细设计领域模型,模块功能/职责.
在每个小节点,对书籍或项目进行整理,提取思路和设计模式,然后应用到项目中,养成这样的正向循环.
与牛人在一起,拥抱讨论和分享.
沉浸到英语的环境里.