在开始回答前,先简单概括性地说说Linux现有的所有进程间IPC方式:
1. **管道:**在创建时分配一个page大小的内存,缓存区大小比较有限;
2. 消息队列:信息复制两次,额外的CPU消耗;不合适频繁或信息量大的通信;
3. 共享内存:无须复制,共享缓冲区直接付附加到进程虚拟地址空间,速度快;但进程间的同步问题操作系统无法实现,必须各进程利用同步工具解决;
4. 套接字:作为更通用的接口,传输效率低,主要用于不通机器或跨网络的通信;
5. 信号量:常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
6. 信号: 不适用于信息交换,更适用于进程中断控制,比如非法内存访问,杀死某个进程等;
Android的内核也是基于Linux内核,为何不直接采用Linux现有的进程IPC方案呢,难道Linux社区那么多优秀人员都没有考虑到有Binder这样一个更优秀的方案,是google太过于牛B吗?事实是真相并非如此,请细细往下看,您就明白了。
珍藏版(1)——高级 UI 晋升
第一节、触摸事件分发机制
- 前言
- 简介
- 被分发的对象
- 分发事件的组件
- 分发的核心方法
- 事件分发过程
- 总结
第二节、View 渲染机制
1、为什么是 16ms
2、为什么 16ms 没完成绘制就会卡顿
3、渲染原理
4、过度绘制(overdraw)*检测.
5、Overdraw 的处理方案
6、减少不必要的层次:巧用 Hierarchy Viewer
第三节、常用 View
1、RecycleView
2、CardView 使用
3、ViewPager
4、WebView
第四节、布局 ViewGroup
1、UI 的描述
2、用户界面布局
3、 在 Android 中提供了几个常用 View 布局
4、 几个重要的布局
第五节、自定义 View 实战
1、Canvas
2、 Paint
3、引入资源.
4、使用
珍藏版(2)——Android 组件内核
第一节、Activity 调用栈
1、起源
2、Activity形态
3、生命周期
4、Activity启动和销毁过程
5、Activity的重新创建过程
6、Android任务栈简介
第二节、Fragment管理与内核
- 1、Fragment事务管理源码分析
1.1概述
1.2分析入口
1.3代码分析 - 2、Fragment转场动画
2.1标准转场动画:
2.2自定义转场动画
2.3 android.app.Fragment - 3、 Fragment嵌套Fragment要用getChildFragmentManager
第三节、Service内核原理 - 一 startService与bindService的区别
1、生命周期上的区别
2、调用者如何获取绑定后的Service的方法
3、既使用startService又使用bindService的情况
4、本地服务与远程服务
5、代码实例
6、在AndroidManifest.xml里Service元素常见选项 - 二 多线程IntentService的工作原理 & 源码分析
2.1.1流程示意图
2.1.2 特别注意
2.2. 源码分析
2.3. 源码总结
三、前台服务与通知
3.1 什么是前台服务
3.2 通知
第四节、内核之组件间通信方案
一、Activity与Fragment之间的通信交互
二、Service和Activity的相互通信
三、 Intent传递数据大小限制
第五节、组件间通信方案
一、ViewModel 与 View 的通信
二、EventBus源码分析
珍藏版(3)——大型项目必备IPC
第一节、Binder 机制原理
摘要
引言
1.面向对象的 Binder IPC
2.Binder 模型
3.Binder 协议
第二节、其他 IPC 方式
- IPC 的 6 种方式
1.Bundle
2.使用文件共享
3.Messenger
4.AIDL
5.ContentProvider
6.Socket
珍藏版(4)——数据持久化
第一节、Android文件系统
1.前言
2.内部存储
3 外部存储
4 获取权限
5 详解Android权限机制
6 可用性检查
7 公共文件(共享文件)
8 私有文件
9 缓存文件
第二节、轻量级Kv持久化
1、SharedPreferences详解与原理分析
2、微信MMKV源码分析
第三节、嵌入式数据库 SQLite
1、功能
2、内部结构
3、数据类型
珍藏版(5)——Framework 内核解析
第一节、XMS 内核管理
- 一、AMS 家族
1、AMS启动流程
2、Lifecycle
3.ActivityStackSupervisor#startSpecificActivityLoc
4.ActivityStackSupervisor#getProcessRecordLocked()
5.Instrumentation#execStartActivity()
6.ActivityManagerNative#onTransact()
7.ActivityManagerService#startActivity()
二、WMS - 1.WMS概述
窗口管理
窗口动画
输入系统的中转站
Surface管理 - 2.WMS的诞生
三、PackageMS启动
- PackageMS相关框架类
2.PackageMS启动过程
第二节、Handler消息机制
Handler概述
1、Handler最常规的使用方式:
2、两个子线程之间通信
3 Handler补充
第三节、布局加载与资源系统
1、LayoutManager
2、Resources 和 AssetManager
【延伸Android必备知识点】
【Android部分高级架构视频学习资源】
**Android精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
【Android进阶学习视频】、【全套Android面试秘籍】点击这里查看免费领取方式!
**任何市场都是优胜略汰适者生存,只要你技术过硬,到哪里都不存在饱和不饱和的问题,所以重要的还是提升自己。懂得多是自己的加分项 而不是必须项。门槛高了只能证明这个市场在不断成熟化!**另外一千个读者就有一千个哈姆雷特,所以以上只是自己的关键,不喜勿喷!
击这里查看免费领取方式!](https://docs.qq.com/doc/DSkNLaERkbnFoS0ZF)**
**任何市场都是优胜略汰适者生存,只要你技术过硬,到哪里都不存在饱和不饱和的问题,所以重要的还是提升自己。懂得多是自己的加分项 而不是必须项。门槛高了只能证明这个市场在不断成熟化!**另外一千个读者就有一千个哈姆雷特,所以以上只是自己的关键,不喜勿喷!
如果你是卡在缺少学习资源的瓶颈上,那么刚刚好我能帮到你。欢迎关注会持续更新和分享的。