前言
最近很迷茫,早晨到公司打开电脑之后都不知道要做些什么,在没有公司任务的时候,甚至不知道应该去学一些什么,感觉技术已经达到了瓶颈。
在工作闲暇之余,先是想要学习JetPack,于是参考了郭神的开源项目:酷派天气学习了JetPack,但数据库并没有使用郭神的Litepal,想改用Google的RoomDatabase来实现的,于是参照Google官方的Demo来学习,依赖、编码都没问题,但是在运行时却出现了这样的报错:
苦思无果,越想越困,后来便刷起了知乎…
PS:在今天写文章时复现了一下这个错误,然后又去全球同性交流网站看了一下,终于在这里找到了答案
原答案:
原来之前我忘记了Kotlin的kpat依赖,最后又看了一下Google的Demo源码,找到了错误源头,修改了一下
修改之后,编译测试通过,问题终于得到解决。
通过这次Bug解决,我更坚信了对写文章坚持的想法,有时候通过文章的书写,更能发现问题。就像一个知识点,自己懂了,和给别人讲懂的难度是不一样的。讲给别人听,更需要对这个知识的彻底理解,然后用自己的语言来说明,这时还要考虑听讲人的理解程度,讲课也是一门学问啊。
跑题了…
后来又学习自定义View(自定义View已经看过),这次学习方式是看别人的源码,看不懂!
之后学习Flutter,环境搭好,但是没有虚拟机,项目运行不了。放一放!
后来又去学习Python,但感觉与Android关系不大,无法学以致用,兴趣不高
最后又去刷知乎…
这次周末放假回来之后,我觉得不能再这样学了,多门通不如一门精,所以这次准备花一些时间来制定之后的学习方向,有计划的学习,度过瓶颈期。
瓶颈期是比较难突破的,但还是不能停下来,只要有明确的目标,一步一个脚印的去学习,一定能突破瓶颈,摆脱一看书就困的窘境(也有可能是我的春困( ̄▽ ̄)~*)。
目标
之前也看了任玉刚老师的博文,写的非常好,都是Android开发的基础,在这里结合我目前的情况,在结合博客中的Android开发工程师几个阶段,来制定属于我自己的学习计划。
首要目标(应用架构)
Jetpack组件化开发
Jetpack组件化开发。Jetpack虽然出来的比较新,但对Android应用的快速构建还是非常有好处的,目前Google也推荐使用Jetpack来构建自己的应用,所以我把它当成学习的首要目标。
- 学习方法:
- Google官方Demo
- 郭神的开源项目:酷派天气
Kotlin
Kotlin。Kotlin目前已经是Android开发官方语言,学习的重要性不言而喻。
- 学习方法:
- Kotlin中文文档
- Kotlin教程
- 再结合上面的学习方法,在学习Jetpack的同时,也把Kotlin语法和特性学习了。
夯实基础
- ALDL:熟悉AIDL,理解其工作原理,懂transact和onTransact的区别
- Binder:理解Binder的工作原理,懂Parcel对象的使用
- 事件分发:弹性滑动,滑动冲突
- 自定义View:贝塞尔曲线,阻尼系数
- 设计模式(配合系统源码来理解)
- 懂性能优化、熟悉mat等工具
- 多进程
- 消息队列
学习方法:《Android开发艺术探索》、《Android群英传》跟着书中来实践,并将所学知识记录在博客中
高级进阶
- 了解系统核心机制:
- 了解SystemServer的启动过程
- 了解主线程的消息循环模型
- 了解AMS和PMS的工作原理
- 能够回答问题”一个应用存在多少个Window?“
- 了解四大组件的大概工作流程
- …
- 基本知识点的细节
- Activity的启动模式以及异常情况下不同Activity的表现
- Service的onBind和onReBind的关联
- onServiceDisconnected(ComponentName className)和binderDied()的区别
- AsyncTask在不同版本上的表现细节
- 线程池的细节和参数配置
- …
- 熟悉设计模式,有架构意识
学习方法:《Android 源码设计模式解析与实战》、《Android内核剖析》
结语
写了这么多,就是想让自己浮躁的心沉寂下来,从迷茫中解脱出来,从花花世界中解放出来,继续点亮自己的技能树。同时也要从形形色色的技术中,选择适合自己之后发展的,学以致用的,优先度最高的。
青春易逝,韶华易老。学习之前,先定一个小目标,再从制定计划开始…