2024年Android最新Android IPC机制(1),2024年最新闭关60天学懂NDK+Flutter

最后

其实要轻松掌握很简单,要点就两个:

  1. 找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。
  2. 多练。 (视频优势是互动感强,容易集中注意力)

你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。

阿里P7Android高级教程

下面资料部分截图,诚意满满:特别适合有3-5年开发经验的Android程序员们学习。

附送高清脑图,高清知识点讲解教程,以及一些面试真题及答案解析。送给需要的提升技术、近期面试跳槽、自身职业规划迷茫的朋友们。

Android核心高级技术PDF资料,BAT大厂面试真题解析;

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • Parcelable 主要用在内存序列化上

  • Binder

  • 可以使用 AIDL(系统提供的快速实现 Binder 的工具) 自动生成代码, 也可以自己写

  • Android 中 IPC 方式

  • Bundle(使用 Intent 中附加的 extras)

  • 非常简单, 方便

  • 使用场景: 直接传递数据

  • 共享文件

  • 简单方便

  • 对象记得序列化

  • 不建议使用 SP 进行进程间通信, 虽然它也是文件, 但是它内存有一定的缓存策略, 内存中有一份 SP 文件的缓存.

  • 使用场景: 由于并发读写存在问题, 适合对数据同步要求不高的进程之间通信

  • Messenger

  • 其实底层是通过 AIDL 实现的, 也就是通过 Binder 来通信的

  • 数据传递必须将数据放入 Message 中

  • 串行方式处理, 一个一个地来

  • AIDL

  • 服务端

  • 首先创建一个 Service, 用来监听客户端的连接请求, 然后创建一个 AIDL 文件, 将暴露给客户端的接口在这个 AIDL 文件中声明, 最后在 Service 中实现这个 AIDL 接口即可

  • 客户端注册的 listener(RemoteCallbackList, 底层是 map,key 是 binder), 服务端调用 listener 中的方法, 这个方法是运行在客户端的 binder 线程中, 可能很耗时, 所以不能在 UI 线程搞

  • 客户端

  • 首先需要绑定服务端的 Service, 绑定成功后, 将服务端返回的 Binder 对象转成 AIDL 接口所属的类型, 接着就可以调用 AIDL 中的方法了.

  • 调用服务端的方法时, 运行在服务端的 binder 线程池中, 不能在 UI 线程调用

  • 客户端与服务端之间传递的对象不是引用, 而是序列化和反序列化了的

  • ContentProvider

ContentProvider 是 Android 中提供的专门用于不同应用间进行数据共享的方式, 天生适合进程间通信. 底层是 Binder

  • android:authorities 唯一标识

  • onCreate()在主线程中运行, 其他 () 都在 binder 线程中运行

  • 通过 Uri 来区分外面要访问的数据集合, 需要定义单独 Uri 和 Uri_Code, 使用 U 日 Match 而的 addURI() 方法将 Uri 和 Uri_Code 关联到一起

  • update,insert,delete 方法会引起数据源的改变, 这时候需要调用 ContentResolver 的 notifyChange 方法来通知外界当前 ContentProvider 中的数据已经发生改变

  • 观察 ContentProvider 中的数据改变情况, 可以通过 ContentProvider 的 registerContentObserver() 方法来注册观察者, unregisterContentObserver 方法来解除观察者

  • Socket(网络通信肯定是可以的撒)

  • 底层实现分类

  • TCP

  • 稳定

  • 超时重传

  • 三次握手, 四次挥手

  • UDP

  • 无连接

  • 不太可靠, 只保证发出去, 不保证正确传输

  • 效率高

  • 连接上了之后可以互相通信, 不像 Http(是 APP 主动通信, 然后服务端返回).

  • Binder 连接池

当 aidl 比较多的时候, 需要用到 Binder 连接池, 为了共用一个 Service. 这个 Service 可兼容多个 aidl

  • 我们需要减少 Service 的数量,将所有的 AIDL 放在同一个 Service 中去管理。Binder 连接池用于转发查询应该使用哪个 aidl

  • IPC 优缺点及适用场景

  • Bundle

  • 优点: 简单易用

  • 缺点: 只能传输 Bundle 支持的数据类型

  • 适用场景: 四大组件之间的进程间通信

  • 文件共享

  • 优点: 简单易用

  • 缺点: 不适合高并发场景, 并且无法做到进程间即时通信

  • 适用场景: 无并发访问情形, 交换简单的数据实时性不高的场景

  • AIDL

  • 优点: 功能强大, 支持一对多并发通信, 支持实时通信

  • 缺点: 使用稍复杂, 需要处理好线程同步

  • 适用场景: 一对多通信且有 RPC(远程过程调用) 需求

  • Messenger

  • 优点: 功能一般, 支持一对多串行通信, 支持实时通信

  • 缺点: 不能很好的处理高并发情形, 不支持 RPC, 数据通过 Message 进行传输, 因此只能传输 Bundle 支持的数据类型

  • 适用场景: 低并发的一对多即时通信, 无 RPC 要求, 或者无须要返回结果的 RPC 需求

  • ContentProvider

  • 优点: 在数据访问方面功能强大, 支持一对多并发数据共享, 可通过 Call 方法扩展其他操作

  • 缺点: 可以理解为受约束的 AIDL, 主要提供数据源的 CRUD 操作

  • 适用场景: 一对多的进程间的数据共享

最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

上面分享的百度、腾讯、网易、字节跳动、阿里等公司2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。

【Android思维脑图(技能树)】

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

【Android高级架构视频学习资源】

**Android部分精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

做到真正的技术提升。**

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值