知识点专项整理

本文详细梳理了Android的跨进程通讯、消息队列、Binder机制、管道与信号、共享内存等IPC方式。深入探讨了Android的事件分发机制、OkHttp的使用与原理,以及Retrofit的动态代理和缓存机制。同时,介绍了线程池、锁机制、动画类型、Android版本适配变化,文件权限管理以及RecyclerView的复用机制等核心知识点。
摘要由CSDN通过智能技术生成
  1. 跨进程通讯(IPC)

参考Android通信机制

消息队列:基于SystemV和Posix系统 优点异步,解耦,缓冲,缺点:比信号和管道更加重,队列数据有上限(一般16KB)
Android中代表handler,但handlerr只是进程内的通信方式 :由 消息轮询器(Looper)、消息队列(MessageQueue)、消息处理器(Handler)三部分组成,轮询器通过prepare()初始化消息队列,处理器通过队列的enqueMessage()将消息插入消息队列中,此时会唤醒轮询器,轮询器next()取出消息队列中的消息,当前消息的target(也即Handle)的dispatchMessage()分发给处理器处理, 参考探索Android消息机制
handle消息中的同步屏障消息会放行异步消息,同步消息需等待同步屏障消息执行完

Binder: android系统独有,AIDL,BroadCast,Content Provider都是基于Binder机制通信的,优点:解决并发安全,同时提升效率(一次数据拷贝),缺点:内存占用过多,使用太过复杂,而且数据传输量有限制,参考Binder机制
本质上就是C/S架构的共享内存的IPC机制,结构上是一种物理虚拟设备驱动,代码角度上讲实现了IBinder接口,也即实现了Binder机制,通过内存映射(mmap())达到拷贝一次数据即可通讯的目的,提升效率。由server端提供服务,client端使用服务,ServerManage管理服务,Binder驱动连接桥梁,三端都是通过Binder驱动间接相连

管道:基于Unix系统,PIPE指匿名管道:半双工单向通讯,只能在父子,兄弟进程间通讯,数据量小,但无并发问题;FIFO指有名管道:半双工双向通讯,对进程无限制,但需考虑并发;都是通过创建虚拟文件实现,只能接收字节流信息
android中代表Looper:使用pipe管道进行唤醒操作

信号:基于Unix系统,是一种软中断,发出信号后,有进程监听这个信号会接收到,没有则忽略
android中SIGKILL信号便是这一机制,用于在内核中捕获并处理

共享内存:效率最高,但有并发安全性问题,通过通过**shmget()函数申请共享内存,该内存不在内核区,可以存储的数据量大
android 中图形界面显示,使用匿名共享内存方式,通过
mmap()**函数将申请到的内存映射到自己的进程空间࿰

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值