高级Android的核心知识点

网上看到的,感觉挺好,不喜勿喷

高级Android的核心知识点_第1张图片
image.png

各大开源框架的研究,包括但不限于下面几个

OKhttp、Retrofit、eventbus、Glide、eventbus、Rxjava、blockcanary、mvvp、dagger2等。
组件化是基本要会的,插件化大公司要求会实操的。
java 部分,包括 常见的数据结构和算法,hashmap,二叉树,红黑树,apt 注解,aop插桩,整套多线程知识点,包括ThreadLocal实现原理
flutter/Dart 大家要开始学了,就和当年我们学 kotlin 一样,flutter 基本一锤定音了,google 下一代就是 flutter 的天下。
android 的系统原理,Lru算法,Binder机制,EventBus实现原理和为什么不能跨进程,跨进程几种方式,AIDL,handler机制。
音视频开发,直播、点播、音视频通话、音视频会议,短视频,这些不一定要多深入,但是基本的各大平台的 SDK 要会集成,能根据开源的 哔哩哔哩IJKMediaPlayer 编写自己的视频,音频播放模块。
最后,就是Android的优化了,Android的优化无外乎以下几个方面:内存优化(稳定性)、交互优化(流畅度)、耗电优化(省电)、安装包大小优化、网络优化、应用启动优化等几个方面。

如果大家想要深入的话,可以重点关注下以下几个方面的内容:

图形图像开发,不限于OpenGL ES,EGL,GLSurfaceView,滤镜,美颜,canvas,paint
应用层开发。主要还是原生开发,提高性能优化技能(启动耗时、内存、耗电、网络、数据库、稳定性等),达到高级开发者的水准
深入Android专业技能提升。主要是阅读源码,理解透Android开发常见的流程和原理(activity启动流程、事件分发机制、广播机制、Binder机制、内存管理机制等)
向Android架构师发展。从平时的一点一滴开发中,有意训练Android架构设计能力,这需要站在一个更高的角度来统筹App开发。

跨平台开发能力。如RN、Weex、Flutter等。大部分公司目前都需要有跨平台开发能力,所以我们很有必要提高这方面的能力
SDK和框架开发。可以通过研究开源项目或者实际项目开发,抽象提取有用SDK和框架供其他人使用
研究Android安全开发。App加固原理和实现,熟悉常见加密方式(如:RSA、DES等)、Https、支付安全等。
Android自动化测试工具开发。这需要对ADB、Android截图、Android布局解析、Android测试框架等相当熟悉
音视频开发。前两年比较火的直播,还有这一两年比较火的短视频,都是与音视频相关。所以,我们可以了解音视频的编解码以及传输协议等。
手游开发。游戏给鹅厂带来了稳定的收入,所以这也是不错的方向。这就需要熟悉常见的游戏开发框架cocos2d-x、Unity3D
图像开发。比如美图秀秀、天天P图,都用到图形的合成、滤镜等技术,对图像处理有很高要求。
Android Framework 开发
除此之外,要成长为一个架构师,还需要开发者具备系统设计能力。具体来说,为如果你仅仅是对各种各样的技术都熟悉,有技术广度,也有一定的技术深度,实际上是不够的。如果你的系统设计能力不到位,可能导致你在开发系统的时候会乱用技术。

比如说,有的系统他有一些自己特殊的业务场景和技术挑战,实际上在这个场景之下比较合适的是采用 “缓存 + 数据库” 的技术方案来应对。但是呢,有的工程师会很多技术,但是缺少这种准确的分析系统问题,提出合理的技术方案的能力,也就是缺少系统设计能力,导致他可能会引入Elasticsearch这种技术来尝试解决这个问题,那么结果必然是失败的。

规范代码
不管如何,你的代码得先能让人看。这是我在刚刚入行时,一个老司机指导我的,随着我在学习的深入,了解的更多,我们在基本功上的追求不就是为了代码更加好看吗,好看的代码才更好懂,才能好改,设计模式,代码架构,框架设计,MVP(多端分离) 不都是追求的这个最终结果嘛。

因此,我们可以从以下几个方面着手:

实现功能前先设计好代码,好的框架层次,让我们可以快速的了解整个框架实现,快速的找到想要的代码,优秀准确的名字我们可以知道类是干什么的,
注释写的尽量详细
不要写太长的方法
不要写太“牛”的代码了,有的程序员喜欢写非常有个性的代码,喜欢写一些别人很难看懂的代码,他认为这样才能显示出自己的“高水平”,这样就不是高水平了,只能说代码的可读性太差了。
最后,互联网不存在所谓的寒冬,只是你没有努力罢了!!!

最后的最后

不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知。懂的越多的时候你才会发现懂的越少。

对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

你可能感兴趣的:(高级Android的核心知识点)