截止到今天,Android生态也发生了不少变化,从一个多年经验的Android开发者角度分析Android的开发现状,不喜勿喷。
==================================================================
Kotlin已经成为Android开发的官方语言,Android的新的文档和Sample代码都开始转向 Kotlin,在未来Java将加速被 Kotlin替代。 https://developer.android.google.cn/kotlin
===============================================================
KTX是Kotlin与Android之间无缝衔接的粘合剂,是Kotlin和Android能够发生化学反应的催化剂。未来将在Coroutine等各方面为Android提供更多支持。 https://developer.android.google.cn/kotlin/ktx
===================================================================
Jetpack的意义在于帮我们在SDK基础上提供了一系列中间件工具,让我们可以摆脱不断造轮子抄轮子的窘境。同类的解决方案首先考虑Jetpack其次考虑第三方实现,没毛病。
当然Jetpack本身也会不断吸收优秀的第三方解决方案进来。所以作为开发者实时关注其最新动态就可以了。 https://developer.android.google.cn/jetpack/androidx/versions
====================================================================
自从Android开始推荐SAA(Single Activity Application)模式以来,Fragment的角色越发重要,出现了很多改进,FragmentFactory、FragmentContainerView等增加了很多新技能。
根据Android Submit中介绍,对于一直被诟病的Fragment的复杂的生命周期在不久的未来也会被优化(Fragment将废弃onActivityCreated),所以有条件的话希望大家多使用Fragment少使用Activity。
无论是多个Activity还是多个Fragment,都不存在原罪,本质上都是为了提供丰富灵活的视觉交互。区别在于,作为实现者你能否熟练掌控内存更加友好同时也更难驾驭的Fragment**,以达到Activity一样甚至更佳的表现。**
====================================================================
安全性是个容易被忽略的需求,但是在未来将会越来越受重要。Security是Jetpack提供的可用于SharedPreferences等数据读写场景的加密库,以往这种需求往往是开发者自己实现,现在官方提供了统一的解决方案,值得尝试。
现在minSdk支持到23,未来可能会向下兼容到21 https://developer.android.google.cn/topic/security/data
==================================================================
Paging不用多介绍了,现在是列表页面中的主流方案。3.0好像用Kotlin完全重写了,全面转向Coroutine,将会给开发者带来全新的使用体验。 https://cs.android.com/androidx/platform/frameworks/support/+/androidx-master-dev:paging/common/src/main/kotlin/androidx
===============================================================================
官方提供的AOSP以及Jetpack源码的检索工具,不只是简单的显示代码,左侧还可以浏览文件目录和文件的outline,还可以查看git提交历史等。 https://cs.android.com/
但是毕竟不是本地代码,再加上服务器在境外,访问体验不是很流畅,作为简单大范围浏览时使用这个在线工具,作为模块精读时还是clone到本地比较好
==============================================================
虽然Kotlin有Koin等方案,但是Google在Android中仍然推荐首选Dagger,各种AAC的demo里也充斥着dagger的使用。虽然Dagger的学习门槛相对其其他同类框架稍高,在大型项目中确实是有长远收益的,未来对于dagger-android的易用性上也会进一步优化,建议作为DI的首选方案 https://developer.android.google.cn/training/dependency-injection
======================================================================
个人认为Coroutines到目前为止的推广速度不尽人意,可能是因为Andorid端一直缺少前端那样的Promise模型的异步通信(Future在Android上的使用也不多),所以开发者缺少对协程理解的心智基础,再加上RxJava等框架实在太过优秀。
但是随着Flow的推出,以及Jetpack对Coroutines的不断加持,我对其未来还是保持乐观的,没有接触过的同学最好赶紧熟悉起来 https://developer.android.google.cn/kotlin/coroutines
========================================================================================
KotlinConf 2019中关于MPP的讨论非常多,Kotlin1.4也将最多的升级放到了MPP上,个人感觉MPP作为Kotlin未来竞争力的关键,势必得到Jetbrins甚至Google的重视,未来潜力巨大,值得关注。
===========================================================================
文末
面试:如果不准备充分的面试,完全是浪费时间,更是对自己的不负责!
不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!