自我学习
学习清单
- 1、看完极客时间刘超老师的趣谈网络协议
- 2、看完《深入理解Java虚拟机》
- 3、学习CountDownLatch源代码
- 4、学习Java的并发知识
1、看完极客时间刘超老师的趣谈网络协议
在印象笔记做了每章小结的记录
2、看完《深入理解Java虚拟机》
在百度脑图做了笔记
3、学习CountDownLatch源代码
输入博客一篇CountDownLatch的使用与解析
4、学习Java的并发知识
推荐阅读 Java并发编程,你需要知道的
遇到的问题
1、Retrofit/RxJava2如何优雅处理错误,比如需要解析错误的responsebody
解决方法:
(1)在Observer的onError处理:
public void onError(Throwalbe e) {
BaseView view = weakReference.get();
if(e instanceof HttpException) {
ResponseBody responseBody = ((HttpException) e).response().errorBody();
view.onUnknowError(getErrorMessage(responseBody));
} else if (e instanceof SocketTimeoutException) {
view.onTimeout();
} else if (e instanceof IOException) {
view.onNetworkError();
} else {
view.onUnknowError(e.getMessage());
}
}
(2)可以使用onErrorResumeNext解决
参考 Responses/Errors with Retrofit 2 & RxJava2
2、引入第三方库时,在编译过程中,报了aapt.exe(finished with non-zero exit value 1)异常问题
解决方法:
aapt.exe异常是指编译资源时的异常,可以把自己的build.gradle的compileSdkVersion和buildToolsVersion提高,兼容第三方库。
扩展:compileSdkVersion是APP编译过程中使用的版本
targetSdkVersion是APP的目标 API 版本,指你已测试APP兼容的版本,手机系统不再使用向前的兼容版本
minSdkVersion 指定APP运行所需最低 API 版本,手机系统小于这个版本不安装。
收获体会
1、对自己提高要求,采用更高级的方式去实现需求,虽然会遇到困难,但这是自己技术成长的必经之路。
例如,以前都是线程池处理异步,现在对自己提高要求,采用RxJava,同时结合到Retrofit中,提高开发能力。
2、坚持TODOList,预估需要的时间。
3、在Dialog中使用ConstraintLayout容易出现UI不完整问题,尤其使用wrap_content,可以外部使用match_parent,内部做居中处理,
有链式可以尝试使用app:layout_constraintVertical_chainStyle="packed"
4、多问自己几个为什么
比如为什么class文件编译成dex文件,因为dex文件去除了class文件结构中冗余的设计,更加精简,适合于运用在移动端。
转变思维方式 >> 业务范围外的技术应用
量化目标,少用形容词
聪明反被聪明误、虽然自己不感觉是在找借口,实际是在找借口,需要正视问题所在(多问自己几个为什么,可以量化而不是形容词)
待改进的地方
1、更合理预估TODO List的时间,以后与人合作开发的需求需要预估更多时间,这里新增成本有沟通成本,理解代码成本。
2、积累经验,提高预估时间的准确性。有些预估不够准确,比如埋点,4个埋点预估1h,简单还可以,但有一个埋点错误情况太多,需要多点时间,另外特殊情况,埋点表有问题,也需要时间跟产品沟通。再另外,有些没有预估到,比如跟QA、产品沟通时间。
3、提高学习的时间,记住自己想要什么,你想要进步,就需要付出更多,排好优先级,把宝贵的时间花在更重要的事情上。
4、评估好事情的优先级,提高自己的执行力。需要分清楚优先级,临时出现的事情,如果优先级不高,那么放在后面。
5、克服自己的惰性。一是清楚自己想要什么,比如成为高级工程师,那么你需要付出更多时间在学习技术上,提高自己的技术水平;二是养成一些好的习惯,比如晚上固定时间学习,周末固定时间输出一篇博客,好的习惯就如吃饭惯性一样,让自己本能去做事。