![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Framework
文章平均质量分 87
在 Android 基础应用基础上,逐步往 framework 层深入学习,可以更好的理解 Android 架构,提升 Android 编码能力。
Lud_
积累点滴
展开
-
android 开机动画执行流程
android开机动画原理,进程启动流程,动画播放原理。原创 2024-06-05 14:04:19 · 1128 阅读 · 2 评论 -
Android P以后为什么有的系统方法通过反射也调用不到了?
Android P以后对反射做了什么限制?有没有什么解决方案。原创 2023-03-11 18:21:54 · 1103 阅读 · 0 评论 -
android 怎样跨进程传递大图?Intent 也是采用 binder传递数据,为什么会被限制大小呢?直接使用 binder 呢?
跨进程传递大图有哪些方案TransactionTooLargeExceptionBitmap 是怎么传输的为什么 intent 带大图异常,但是 binder 传输就没有问题呢?原创 2023-02-16 20:44:16 · 1505 阅读 · 1 评论 -
深入理解 Handler(java 层 + native 层)
线程消息队列时怎样实现的消息是怎么传递的?Handle 的延迟消息是怎么处理的?IdleHandler 的原理主线程进入了 Looper 循环为什么没有 ANR?消息屏障是什么?原创 2023-02-14 21:32:02 · 1919 阅读 · 1 评论 -
Binder 跨进程传递对象的原理
1. binder 传递有哪些方式 2. binder 在传递过程中是怎样存储的 3. binder 对象序列化和反序列化的过程 4. binder 对象在传递过程中驱动做了什么原创 2023-02-08 01:05:19 · 908 阅读 · 0 评论 -
android一次完整的 IPC 通信流程是怎样的?
1. binder 整体的架构原理 2. 了解应用和binder驱动的交互原理(client 端和 Server 端与binder驱动的交互是不一样的) 3. 了解 IPC 过程中的通信协议原创 2023-02-04 17:19:10 · 816 阅读 · 0 评论 -
浅谈对 Binder 的理解
1. binder 是干嘛的 2. binder 的存在意义是怎样的 3. Android 为什么选择 binder 作为主要的 ipc 通信机制? 4. binder 的架构原创 2023-01-29 18:31:08 · 380 阅读 · 0 评论 -
android Framework 中用到了哪些跨进程通信方式?
我们常用的AMS,PMS 等都是通过Binder机制来完成跨进程通信的,那么除了Binder ,Linux 还有其他跨进程通信的方式可以选择?原创 2022-11-30 02:06:26 · 790 阅读 · 0 评论 -
Android Surface 是如何跨进程传递的?
也就是 SurfaceControl 中有一个 mGraphicBufferProducer 然后根据 mGraphicBufferProducer 创建了一个native 层 Surface 对象,然后将 native 层的 Surface 对象的指针,保存到 Java 层 Surface 对象中。因为Java层对象中保存了一个 native 层对象的指针。上面方法创建了 native 层的 surface 对象 并且和Java层的surface 层对象绑定一起,在创建对象的时候,原创 2022-11-17 21:48:32 · 1629 阅读 · 0 评论 -
Android UI 刷新机制
之前在中大概了解过 Android 的刷新机制,今天再带着问题了解一下 Android UI 的刷新机制。原创 2022-11-10 23:21:42 · 602 阅读 · 0 评论 -
Android 广播的注册和收发原理
静态广播和动态广播的分发接收原理原创 2022-10-29 17:40:22 · 1041 阅读 · 0 评论 -
Android 深入理解 Service 的启动和绑定
Android 深入理解 Service 的启动和绑定原创 2022-10-26 00:22:49 · 1741 阅读 · 0 评论 -
Android 应用的 UI 线程是怎么启动的?
- 什么是 UI 线程- UI 线程的启动流程,消息循环是怎么创建的- 连接 Android 的显示原理,UI 线程和 UI 之间是怎么关联的原创 2022-10-23 16:53:29 · 857 阅读 · 0 评论 -
Android 的显示原理
window、wms、viewRootImpl、setContentView原创 2019-01-28 23:25:37 · 351 阅读 · 0 评论 -
谈一谈对 Android Context 的理解
Application、Activity、Service、BroadCastReceiver、ContentProvider 的 Context 有什么区别?原创 2022-10-22 02:13:13 · 909 阅读 · 0 评论 -
谈一谈 Android Application 的理解
Application的理解,作用,初始化原理等。原创 2022-10-19 20:43:25 · 926 阅读 · 0 评论 -
Android 应用是如何启动 binder 机制的?
应用启动binder机制的流程?原创 2022-10-18 14:36:48 · 727 阅读 · 0 评论 -
你知道怎样添加一个Android的系统服务么?它和binder应用服务有什么区别?
- 了解如何使用系统服务- 了解系统服务使用的基本原理- 了解服务的注册过程原创 2022-10-12 20:26:45 · 608 阅读 · 0 评论 -
跨进程通信--共享内存(ashmem)实例
提到过,ashmem 通信原理是每个进程打开同一个文件,所以文件描述符需要通过其他方式传递给其他进程,所以这里采用了 Service + aidl 的方式把共享内存的文件描述符传递过去。然后客户端获取到的文件描述符读取该内存下的内容具体步骤如下:其中 MemoryFile 是通过 ashmem 实现的。ParcelFileDescriptor 实现了Parcelable 所以可以通过binder传输。...原创 2022-08-17 20:02:48 · 730 阅读 · 0 评论 -
匿名共享内存 ashmem
mmap 是 Linux 中最为大家熟悉的共享内存方式。通过打开同一个文件,并且使用 MAP_SHARED 标志来调用 mmap() 函数,两个进程就能共享一片内存空间了。但是这种方式存在一个问题,如果分配的空间有一部分不需要了,不能单独释放这些不再使用的“物理内存”,为什么是物理内存呢,因为mmap分配的是地址空间,只有当进程存取某个页面时,才会去分配实际物理内存。这些物理内存只能通过 munmap() 一次性的释放掉。如果某个页面的物理内存不需要了,想把他单独释放,传统的 mmap 时无法做到的。...原创 2022-08-07 15:33:08 · 1613 阅读 · 0 评论 -
ServiceManager 的作用、启动流程和工作原理
ServiceManager 的架构非常简单,只有一个循环来处理消息。没有像 libbinder 中需要多线程去处理配合整个流程。从上面的代码来看 ServiceManager 主要提供 注册 binder 服务、查询 binder 服务 和 获取 binder 服务。do_add_service() 的流程主要是先检查进程是否有权限注册,接着查看是否已经注册过服务,如果已经存在则在驱动中引动计数器-1,不存在则创建一个svcinfo 的结构,把服务的名称存入结构中,...原创 2022-07-07 23:40:55 · 3293 阅读 · 1 评论 -
Android 进程间通信- Binder基础概述
Binder 基础概念原创 2022-06-04 15:37:18 · 600 阅读 · 0 评论 -
通过Intent查询组件
PMS 在系统运行过程中,很重要的一项工作就是通过 Intent 来查询组件信息。系统中响应 Intent 的组件有多个,所以返回的是列表而不是单个(比如 intent 启动的时候会让你自己选择启动哪个app,多个地图软件,多个邮箱软件等),查到的组件都是用类 ResolveInfo 来表示的,为了统一所有的组件都通过它来表示;PMS 中 Intent查询接口如下 @Override public @NonNull ParceledListSlice<ResolveInfo>.原创 2022-05-15 16:32:43 · 462 阅读 · 0 评论 -
android 卸载应用流程
文章目录如果在手机中卸载会有提示卸载页面等,这个一般是 UninstallerActivity;在这里点击卸载调用的是下面代码:ActivityThread.getPackageManager().getPackageInstaller().uninstall( new VersionedPackage(mDialogInfo.appInfo.packageName, PackageMan原创 2022-05-12 11:17:43 · 2555 阅读 · 0 评论 -
android 安装应用过程
文章目录管理会话的服务 - PackageInstallerService安装应用的开端应用安装的第一阶段-复制文件第二阶段-装载应用PMS 在创建的时候创建了PackageInstallerService,所以在安装应用之前先了解一下 PackageInstallerService :用于管理安装的服务附带的是 Android 9.0 的源码管理会话的服务 - PackageInstallerServicePackageInstallerService 主要用于管理安装会话服务,可以通过原创 2022-05-04 17:12:32 · 2331 阅读 · 0 评论 -
SystemServer 中的 WatchDog
文章目录启动 WatchDogWatchDog 监控的服务和线程WatchDog 实现原理对于系统而言,大家都希望一直不出问题,但是很难保证一点不出问题。一但出问题,重启可以解决大部分的问题,因此最简单的办法是检测到了系统不正常了重启设备就好了。WatchDog 看门狗就是用来监测系统是否出问题而诞生的。工作原理是:软件系统必须定时像看门狗硬件中写入值来表示自己没出故障,俗称喂狗;否则超过了时间没有写入数据则重启设备。Android 的SystemServer 是一个复杂的进程,它启动了几十种服务,是最原创 2022-04-07 00:31:19 · 1067 阅读 · 0 评论 -
Zygote 启动应用程序流程
注册 Zygote 的 socket请求启动应用处理启动应用请求fork() 应用进程子进程初始化原创 2022-03-27 17:00:11 · 3583 阅读 · 0 评论 -
Android Framework- Zygote进程以及其初始化
文章目录Zygote 概述Zygote 进程的初始化app_process 的 main 函数main函数启动流程启动虚拟机 AndroidRuntime类启动虚拟机初始化工作 ZygoteInit 类Zygote 概述Zygote 时android中非常重要的一个进程,它和 init 进程、SystemServer 进程同为支持Android最重要的进程。、Linux 的进程时通过系统调用 fork 产生的,fork 出的子进程除了内核中的一些核心数据结构和父进程不同外,其余的内存影像都是和父进程原创 2022-03-20 14:46:54 · 3976 阅读 · 0 评论 -
Android Framework学习目录
Framework 积累学习原创 2022-03-14 20:16:04 · 2135 阅读 · 2 评论 -
Android Framework- Android 第一个用户进程:Init进程(概述)
文章目录概述Bootloader 引导装载和启动 Linux 内核启动 Init 进程(基于 Android9 源码)Init 进程的初始化过程main 函数执行流程解析启动 init.rcinit 文件格式介绍init 进程对信号的处理概述在介绍 Init 之前,先了解一下Android系统的启动过程。从系统角度看,android 系统启动大概分为三个大阶段:bootloader引导、装载,和启动Linux内核,启动Android系统三个大的阶段。其中Android系统的启动还可以分为 启动 Ini原创 2022-03-14 20:14:10 · 4809 阅读 · 0 评论