
Android架构
Android架构
2021、小林子
这个作者很懒,什么都没留下…
展开
-
1.Android中的线程详解
4. 细说主线程(UI)线程的角色5. 线程之间的通信架构主线程丢信息给自己子线程丢信息给主线程替子线程诞生Looper与MQ6. Android UI的单线程程序7. 线程安全的化解之例...原创 2022-02-12 11:08:29 · 401 阅读 · 0 评论 -
2.应用Android的UI框架
应用Android的UI框架(以设计游戏循环GameLoop为例)1. UI线程、View与onDraw()函数2. 基本游戏循环(GameLoop)3. 使用UI线程的MQ(Message Queue)4. 诞生一个小线程担任游戏线程5. 小线程(非UI线程)调用postInvalidate()6. 设计一个GameLoop类别7. 只诞生一次GameLoop对象...原创 2022-02-12 11:55:21 · 667 阅读 · 0 评论 -
3. AIDL与Proxy-Stub设计模式
IPC的Proxy-Stub设计模式1. 复习IBinder接口单层框架图:两层框架:对于App而言,只能看到上层的op接口,但是看不到fun()接口了。改变了t的实现接口:App还是需要直接访问interface接口,并没有完全的隔离开来。改进的版本:建立了中间的曹操类。2. IBinder接口的一般用途对于上述的代码中,开发者需要编写额外的代码,加重了开发者的负担。本单元没有用“proxy-stub” -> 下单元采用“pr原创 2022-02-13 20:06:05 · 695 阅读 · 0 评论 -
4.活用IBinder接口于短程通信
0. 总览1. 在同一进程里,活用IBinder接口2. 目的、议题与方法3. 留意线程角色0. 总览1. 在同一进程里,活用IBinder接口2. 目的、议题与方法3. 留意线程角色原创 2022-02-13 20:45:38 · 252 阅读 · 0 评论 -
5.Messager框架与IMessager接口
0. 总览1. Messager的基本概念和角色2. Android的Messenger框架2.1 Messenger详解2.2 程序代码2.3 步骤详解3. 双向沟通的Messenger框架3.1 单向传递信件3.2 双向传递信件3.2.1 双方如何通过IBinder接口通信?3.2.2 代码详解4. IMessenger接口0. 总览1. Messager的基本概念和角色2. Android的Messenger框架.原创 2022-02-13 21:40:31 · 476 阅读 · 0 评论 -
6.JNI架构原理(Java与C的对接)
1. 总览1. 为什么Android应用需要Java和C对接呢?2. EIT造型的Java实现3. EIT造型的C语言实现3.1 C与Java两个观点幕后一致的本质3.2 Java对象与C函数有何关系?4. EIT造型的C和Java组合实现4.1 C语言实现4.2 Java实现5. EIT混合造型6. 重要议题(由谁来创建基类的对象)1. 总览1. 为什么Android应用需要Java和C对接呢?上述的框架图中,需要弄明白:Java调用.原创 2022-02-13 22:30:51 · 751 阅读 · 0 评论 -
7.认识JNI和NDK
0. 总览1. JNI的基本概念2. 使用Android NDK3. 如何载入*.so档案4. VM是插件管理器的角色5. *.so的入口函数JNI_OnLoad()0. 总览1. JNI的基本概念2. 使用Android NDK上图中,可以将.so文件进行 APK打包,然后发布到应用市场,user可以进行使用。3. 如何载入*.so档案4. VM是插件管理器的角色两个观点.原创 2022-02-13 23:17:42 · 319 阅读 · 0 评论 -
8.JNI(从C调用Java函数)
0. 总览1. Why?将控制点下移到C/C++层1.1 古典视角的反思1.2 新潮视角1.3 软硬结合的机会1.4 软硬结合的范例2. 控制点与函数调用2.1 EIT造型的典型(反向调用:IoC)2.2 也能正向调用2.3 看看Android的范例2.4 C层拥有控制点的比喻2.5 android框架示例图2.6 C++拥有控制权的表现3. How(从C调用Java函数)3.1 控制点的基本特性3.2 从C调用Java函数3.3 示例说明3.4 详细代码讲.原创 2022-02-14 00:37:54 · 1222 阅读 · 0 评论 -
9.JNI_有必要的优化设计
0. overview1. 创建C++类的对象2. 优化目的:维护本地函数的稳定性3. 静态对静态、动态对动态原则4. Java与C++对象之间<单向>对称关连5. Java与C++对象之间<双向>对称关联6. 总结0. overview1. 创建C++类的对象2. 优化目的:维护本地函数的稳定性3. 静态对静态、动态对动态原则4. Java与C++对象之间<单向>对称关连.原创 2022-02-14 22:28:21 · 788 阅读 · 0 评论 -
10.JNI:多个Java线程进入本地函数
0. 总览1. 认识JNI线程模式1.1 Android线程的特性1.2 线程往返Java与C++1.3 VM对象与JavaVM指针1.4 为什么需要JNIEnv对象呢?2. 从Session概念认识JNIEnv对象3. 细说JNIEnv对象4. 本地函数的线程安全(多个线程同步问题)0. 总览1. 认识JNI线程模式1.1 Android线程的特性1.2 线程往返Java与C++1.3 VM对象与JavaVM指针1.4 为什么需要JNIEn.原创 2022-02-14 23:41:25 · 788 阅读 · 0 评论 -
11.JNI:本地线程进入Java层(很好的理解call back的原理)
0. 总览1. 如何创建Native层的子线程?1.1 在C函数里创建子线程2. Native线程进入Java层3. Native多线程的安全0. 总览1. 如何创建Native层的子线程?1.1 在C函数里创建子线程2. Native线程进入Java层3. Native多线程的安全...原创 2022-02-15 00:11:26 · 246 阅读 · 0 评论 -
12.问题集:进程、线程和JNI架构
参考:https://www.bilibili.com/video/BV14K4y1s7gN?p=900. 总览1. 进程(Process)基础2. 线程(Thread)基础原创 2022-02-15 22:42:40 · 1056 阅读 · 0 评论 -
13.认识Android的核心服务
0. 总览1. 区分核心服务与APP服务2. 回忆APP服务3. 区分两种核心服务:Android Service与Native Service4. 核心服务的特性5. 核心服务的特性6. 简介几个Android Service7. 天字第一号的核心服务:Service Manager8. 核心服务的共通API:IBinder接口9. BBinder基类实现IBinder接口...原创 2022-02-16 00:08:59 · 1241 阅读 · 0 评论 -
14. 框架的设计思想
按照EIT造型来理解整个框架的构建。思考:考虑框架的通用性(满足EIT造型),通用性的接口是上层调用的考虑框架的特殊性(设计特殊的stub,提供新的接口)思考:定义接口(强龙)接口实现(地头蛇)谁来调用(强龙)...原创 2022-02-18 09:21:05 · 195 阅读 · 0 评论 -
15.撰写你的第一个核心服务
https://www.bilibili.com/video/BV14K4y1s7gN?p=102&spm_id_from=pageDriver0. 总览1. 为什么要写核心服务呢?2. 亲自开发一个Native Service: SQRService3. 撰写SQR.cpp来使用SQRService4. 撰写Java层Client来使用核心服务5. 撰写一个Java层Activity5.1 新潮的架构设计6. 方案二的实现7. 优化设计0. 总览1. 为什么要写核原创 2022-02-19 11:47:28 · 375 阅读 · 0 评论 -
16. Native核心服务的Proxy-Stub设计模式
https://www.bilibili.com/video/BV14K4y1s7gN?p=107&spm_id_from=pageDriver0. 总览1. 复习:Java层的Proxy-Stub设计模式2. 从IBinder接口说起3. 使用模板,产生Stub类4. 举例:以既有的Native Service为例5. 使用模板产生Proxy类6. 让client使用Proxy类的新接口0. 总览1. 复习:Java层的Proxy-Stub设计模式原创 2022-02-19 15:48:15 · 480 阅读 · 0 评论 -
17.亲自开发SQRService的Proxy-Stub设计模式
0. 总览1. SQRService的Proxy-Stub架构2. 撰写Proxy类代码3. 撰写Stub类代码4. 撰写Core Service类代码0. 总览1. SQRService的Proxy-Stub架构2. 撰写Proxy类代码3. 撰写Stub类代码4. 撰写Core Service类代码...原创 2022-02-19 16:07:57 · 343 阅读 · 0 评论 -
18.Android Service的Proxy-Stub设计模式
0. 总览2. 通用接口:IBinder3. 实践Proxy-Stub模式4. 举例:以既有的SensorService为例0. 总览对于Android Service只需要扩充IBinder接口。AppService必须继承Service类。2. 通用接口:IBinder3. 实践Proxy-Stub模式4. 举例:以既有的SensorService为例...原创 2022-02-19 16:59:35 · 1337 阅读 · 0 评论 -
19. 核心服务CallBack的IBinder设计
0. 总览1. 正向调用核心服务2. 核心服务的远程回调3. Native Service范例代码实现4. Client模块范例代码实现5. 总结0. 总览1. 正向调用核心服务2. 核心服务的远程回调3. Native Service范例代码实现4. Client模块范例代码实现5. 总结...原创 2022-02-19 17:35:05 · 163 阅读 · 0 评论 -
20.HAL的商业意义
0.总览1. HAL的角色2. HAL的商业意义3. 框架设计:维护底层的变动自由度0.总览1. HAL的角色2. HAL的商业意义3. 框架设计:维护底层的变动自由度原创 2022-02-19 17:54:54 · 165 阅读 · 0 评论 -
21.HAL的框架和Stub开发
0. 总览1. 复习:C语言2. 认识HAL的架构3. 扩充hw_module_t4. 扩充hw_device_t5. HAL插件Stub的代码范例6. 总结7.观摩Android的实际HAL-Stub范例0. 总览1. 复习:C语言2. 认识HAL的架构3. 扩充hw_module_t4. 扩充hw_device_t5..原创 2022-02-19 18:35:06 · 1518 阅读 · 0 评论 -
22.从框架看HAL和Linux驱动开发
1. Linux驱动框架的函数表2. 活用工厂EIT造型1. Linux驱动框架的函数表2. 活用工厂EIT造型原创 2022-02-19 19:46:52 · 937 阅读 · 0 评论 -
23.观摩Session模式与Proxy-Stub模式的搭配
0. 总览1. Session设计模式:以CameraService服务为例2. Session设计模式:以VM的JNIEnv对象为例3. Session设计模式:典型架构4. 复习:Proxy-Stub模式5. Proxy-Stub设计模式:以cameraService为例6. SurfaceFlinger服务的Session模式7. SurfaceFlinger服务的Proxy-Stub模式0. 总览1. Session设计模式:以CameraService服务为例.原创 2022-02-19 20:43:50 · 532 阅读 · 0 评论 -
24.思考架构设计的未来性和特殊性
0. 总览1. 架构设计决策的未来性2. 设计出特殊性3. 如何兼顾未来性和特殊性0. 总览1. 架构设计决策的未来性2. 设计出特殊性3. 如何兼顾未来性和特殊性原创 2022-02-19 21:58:05 · 325 阅读 · 0 评论