Android初级工程师进阶资深架构师的学习心得

前言

相信很多从事Android的朋友们肯定都行往更高的境界发展,用更少的代码解决更高的问题,用更清晰的结构为可能的传承做准备。想想当初自己在刚接触到Android的时候也是摸着石头过河,看过不少人介绍的学习路线,就这么走过来多多少少有些收获。现通过自身经历总结一篇文章,供朋友们参考。

1.掌握好Android Framework内核技术

如果说想要进阶到资深架构师,那么对Framework的了解是必不可少的过程。因为Android Framework与我们的开发工作息息相关,目前很多大公司的应用开发都需要基于模块化、层次化、组件化、控件化来设计架构,它的基础就是建立在Android framework框架的底层原理之上, 掌握好Framework就可以更深层次的去解决android应用开发在一开始会遇到的一些难题,甚至有不少公司都有设置专门的Android Framework开发岗位。

要知道目前市场上一般的Android开发岗位已经趋于饱和,发展的方向无法就是往更高级的android开发进阶,去拓宽自己的深度和广度。

想要精通Framework,不仅要对底层原理有一个充分的了解,还能将Framework的知识用到实际的开发工作中,比如:Handler、Binder、Android系统启动流程以及AMS、PMS等内容最好都要会。

之前小编为了搞懂这块的知识点,对Framework进行了很长一段时间的深入研究,并根据自己所学整理一些学习笔记,分享在下面,有需要的同学可复制链接获取。

《Android framework内核学习笔记》内容分享
docs.qq.com/doc/DWHlGYUdseVhsSUda

2.了解网络协议

我们在做Android程序时,并不仅局限于单机,还需要实现交互。这时候就需要用到Android中的网络协议了,说白了就是tcp/udp/http等协议。

TCP协议:可靠的传输协议,TCP连接的建立需要通过三次握手才行,而且它的传输是可靠的,为什么呢?因为它传输的数据能够毫无差错的到达客户端,因为在物理层传输的时候,是0101010二进制bit流进行传输的,所以通过外部因素可能会导致其中的数据改变,但是因为有数据链路层,保证了数据的透明传输,通过冗余码的检测,会将不对的包丢弃,当数据包不对或者长时间没有收到数据包的话,就会请求服务端进行重传,而且数据包不是一次性全部传输的,是几个包传输,而包的大小也是有MTU(最大传输单元)来决定的,然后客户端接收到了之后保证这些包的数据没错而且按顺序到达了客户端才会进行下一批数据的传输。所以这样就会保证数据的可靠传输,而不会丢失或者包错位了。TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到服务端的包的按序接收。然后客户端对已成功收到的字节发回一个相应的确认(ACK);如果客户端在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算和校验。

UDP:不可靠的,非面向连接的传输机制,它不检查数据包是否已经到达目的地,并且不保证它们按顺序到达。因为数据包可以不按顺序到达,并且不需要检测是否正确,所以它传输速度快。在数据链路层的时候,如果冗余码不对的话,就会丢弃数据包,无论是UDP还是TCP协议,都会丢弃数据包,只不过TCP协议会请求重传,而UDP协议不会。

HTTP协议是基于TCP协议的面向连接的可靠传输协议,所以通过HTTP协议获取到的数据总是能获取到的,通过JAVA中的HTTP类可以通过setProperty来设置HTTP协议的一些参数来达到更高的要求。HTTP协议是一种请求响应的协议,B/S就是这样,浏览器发起一个HTTP请求,向服务器请求通过HTTPGET或者HTTPPOST请求,来请求或者传递数据,服务器会返回请求结果,这就是所谓的请求响应。

3.程序要写的更好

代码格式优雅整洁

尽量遵循网上的代码格式,善用开发工具(android studio)的各个功能。

复杂的条件、循环嵌套提炼为方法,把方法名起得有意义,尽量让后人看程序就好像看直白的英文句子一样。追求代码自我注释。要注意尽量用单词别用拼音,特别是模块之间交互的接口(模块内部小范围使用的还好些),英语单词和拼音的混杂使用会让后人昏死。现在的电子词典品种繁多、易于使用,善用它们,让代码优雅的同时还可以多认识几个单词。

代码内容高效

用过很多框架和开源项目并自己写了不少程序之后,可以开始考虑实践《Effective Java》中所讲的内容,何时何地如何运用合适的技术与机制。

4.了解UI架构模式

Android UI框架是一种在安卓系统上开发应用程序的基础设施,它定义了应用的基本框架,包括用户界面,活动,服务,内容提供程序.广播接收器,以及提供应用程序功能的各种类和接口。安卓 UI 框架是安卓应用程序开发的基础,它提供了一个可以轻松创建和管理界面的标准框架,以及一系列用于实现用户界面功能的基础组件。例如:

MVP框架:是Android常见的的一种架构模式,全称是Model、View、Presenter。其中,Model负责数据处理部分,View负责UI界面展示及用户操作交互,而Presenter则是负责大部分运行逻辑的编写。在Android中,常见的MVC架构模式一般是直接在Activity中实现运行逻辑,这样如果功能比较复杂,Activity的代码可读性将会很低,同时耦合性将会很高。与MVC模式相比,MVP模式断开了Model与View的直接交互,降低了代码的耦合性,也提高了代码的可复用性。

MVVM:是Model-View-ViewModel的简写,是M-V-VM三部分组成。它本质上就是MVC 的改进 版。MVVM 就是将其中的View 的状态和行为抽象化,其中ViewModel将视图 UI 和业务逻辑分 开,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。

5.要熟练掌握组件化、插件化等开源框架设计模式

随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,还有65535,应用之间的互相调用等等问题,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。

所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。

6.展望———架构师

架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。
架构师在软件开发的整个过程中起着很重要的作用。

掌握了以上说的知识,应该可以作为一个各个的Android架构师而存在了。曾经有位博主告诉我,想要成为一名android资深架构师,就需要学习,Android framework内核,网络访问,图片加载,数据库管理框架,进程通信框架,Rx响应式编程,注入解耦,组件化架构设计,热修复框架设计,Shadow插件化框架设计等知识。

进阶架构师知识点击图解

1.AndroidFramework内核
在这里插入图片描述
2.网络访问

在这里插入图片描述
3.图片加载
在这里插入图片描述
4.数据库管理框架
在这里插入图片描述
5.进程通信框架
在这里插入图片描述
6.Rx响应式编程

在这里插入图片描述
7.注入解耦
在这里插入图片描述
8.组件化架构设计
在这里插入图片描述
9.热修复框架设计
在这里插入图片描述
10.Shadow插件化框架设计
在这里插入图片描述
掌握以上这些知识点击,月入3W基本不难,但想要把这些全部掌握,确实需要不少时间。所以我特地找朋友借了这份android高级进阶修炼手册,这位朋友曾经在一线互联网公司担任过Android架构师。现在分享给大家。

在这里插入图片描述

在这里插入图片描述
部分内容截图

最后

这些知识点并没有严格的学习界限,可以穿插、迭代地进行。

学习是一个先发散后收敛的过程。开始好像面对一个扇形,越往外走发现不会的越多,需要学的越多。但到了后来就会发现学过的东西相通之处很多,新看的东西能够快速理解,甚至能够发现有些东西不过是新瓶装旧酒,看两眼就会了。

“愚者察异,智者察同”,愚人看到事物各有不同就觉得世界难以掌握,而智者善于看到事物间的共同点(规律)以使事半功倍。既然程序员都干得了就别当自己是个愚者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值