FrameWork层源码
文章平均质量分 92
FrameWork层源码解析
别偷我的猪_09
人间处处是繁华,你要全赴努力开花。
展开
-
Android---MVC/MVP/MVVM的演进
我们通过一个游戏来展现MVC-->MVP-->MVVM 之间的演进。原创 2023-03-26 21:04:13 · 1135 阅读 · 1 评论 -
Android---PKMS核心分析2
安装的本质是:拷贝进去,然后扫描当我们动态申请了 READ_EXTERNAL_STORAGE / WRITE_EXTERNAL_STORAGE其中的一个,可以不用动态申请另一个,因为它们都属于的权限,申请其中一个,就是把EXTERNAL_STORAGE这一组的权限都申请了。动态申请权限后,用于点击了,下一次用户再进来就不再询问权限,是因为这个结果被 PKMS 保存到了 xml 文件中。当我们卸载应用时,保存了权限结果的xml 也卸载了,所有当我们再次安装时,又要再一次申请权限。原创 2023-03-19 17:06:25 · 458 阅读 · 0 评论 -
Android---PKMS核心分析1
Android 系统启动时,会启动应用程序管理服务KPMS,此服务负责扫描系统中特定的目录,寻找里面的 APK 格式文件,并对这些文件进行解析,然后得到应用程序相关信息,最后完成应用程序的安装。PKMS 在安装应用过程中,会全面解析应用程序的 AndroidManifest.xml 文件,来得到 Activity,Service,BroadcastReceiver,ContextProvider 等信息,在结合 PKMS 服务就可以在 OS 中正常的使用应用程序了。原创 2023-03-17 17:58:03 · 1844 阅读 · 0 评论 -
Android---AMS核心分析1
ActivityManagerService(AMS) 是 Android 系统中一个特别重要的,也是我们上层 APP 打交道最多的系统服务之一。ActivityManagerService 主要负责四大组件的启动、切换、调度已经应用进程的管理和调度工作。所有的 APP 应用都需要与 AMS 打交道。Activity Manager 主要由以下几个部分组成:1. 服务代理:由 ActivityManagerProxy 实现,用于与 Server 端提供的系统服务进行进程间通信。原创 2023-03-16 17:16:55 · 905 阅读 · 0 评论 -
Android---系统启动流程
1. init 根据 init.rc 运行 app_process,并携带“-zygote" 和"-startSystemServer"参数。2. AndroidRuntime.cpp::start() 里将启动 JavaVM,并且注册所有 framework 相关的系统 JNI 接口3. 第一次进入 Java 世界,运行 ZygoteInit.java::main() 函数初始化 Zygote,并创建 Socket 的 Server 端。原创 2023-03-10 18:56:24 · 2523 阅读 · 0 评论 -
Android---进程间通信机制3
-- 函数指针 --- svcmgr_handler 作用;1. writeTransactionData ---out写入命令 --write ----cmd = BC_TRANSACTION。-- 给sm --> 做事。--service == AMS --> 将 AMS放入data中。BINDER_WORK_TRANSACTION ---要处理 cmd == BR_TRANSACTION。6.binder_transaction_binder --转换为--> handle。原创 2023-03-04 20:03:57 · 495 阅读 · 0 评论 -
Android---进程间通信机制2
Service Manager(SM):大管家。管理系统服务的 Ibinder。1 如何启动 service_manager 服务1 binder_open(): 打开驱动(设置大小128K),内存映射2 binder_become_context_manager(): 设置 SM 为大管家 --- sm 作用:为了管理系统服务1 创建 binder_node 结构体对象2 proc --指向--> binder_node。原创 2023-03-03 17:40:31 · 635 阅读 · 0 评论 -
Android---Binder进程间通信机制1
假设:进程A,进程B(有一个 test 方法),进程A 想要调用进程B的 test 方法,在进程A 中 new B.test() 显然是不行的。因为进程间的内存是隔离的。(binder map空间),接收方通过 mmap(内存映射) 技术就能直接在共同的物理空间中接收数据。Linux 通过将一个虚拟内存区域与一个磁盘上的物理区域的对象关联起来,以初始化这个虚拟内城区区域的内容,这个过程称为内存映射(Memory Mapping)用户空间是用户程序代码运行的地方,内核空间是内核代码运行的地方。原创 2023-03-01 15:45:22 · 426 阅读 · 0 评论 -
Android---Handler 源码解析
在 android 开发中,经常会在中进行一些操作,当操作完后会通过 handler 发送一些数据给,通知主线程做响应的操作。原理:子线程 handler 主线程,其实构成了线程模型中的经典问题,生产者-消费者模型(子线程往消息队列中放消息,主线程从消息队列中取消息)。生产者-消费者模型:生产者和消费者在同一时间段内共用一个存储空间,生产者往存储空间中添加数据,消费者从存储空间中取走数据。原创 2023-02-24 21:07:22 · 588 阅读 · 0 评论