
Android
文章平均质量分 72
新篇章
星空•物语
心之所向,不留白
展开
-
【Android】Service启动、生命周期
service启动流程每个App进程中至少会有两个binder线程 ApplicationThread(简称AT)和ActivityManagerProxy(简称AMP)当创建的是本地服务或者服务所属进程已创建时,则无需经过上述步骤2、3,直接创建服务即可。其中步骤1可展开如下:生命周期service有两种启动方式,决定有两种生命周期可能...原创 2022-04-12 09:54:46 · 2645 阅读 · 1 评论 -
【Android】Activity启动与生命周期
Activity启动流程App进程是应用程序所在进程,主线程主要负责Activity/Service等组件的生命周期以及UI相关操作都运行在这个线程; 另外,每个App进程中至少会有两个binder线程 ApplicationThread(简称AT)和ActivityManagerProxy(简称AMP)Activity生命周期几种状态:较长时间内保持不变msg: NEW_INTENT (打开已经处于栈顶的Activity,则会发送给NEW_INTENT消息给主线程)APP开发者角度:启动时原创 2022-04-11 16:47:52 · 2276 阅读 · 0 评论 -
【Android】进程间通信——Binder
内存机制:mmap虚拟进程地址空间(vm_area_struct)和虚拟内核地址空间(vm_struct)都映射到同一块物理内存空间。当Client端与Server端发送数据时,Client(作为数据发送端)先从自己的进程空间把IPC通信数据copy_from_user拷贝到内核空间,而Server端(作为数据接收端)与内核共享数据,不再需要拷贝数据,而是通过内存地址空间的偏移量,即可获悉内存地址,整个过程只发生一次内存拷贝为何不直接让发送端和接收端直接映射到同一个物理空间,那样就连一次复制的...原创 2022-04-11 11:11:45 · 3231 阅读 · 0 评论 -
【Android】线程间通信——Handler消息机制
优先级队列,按时间enqueueMessage()中msg.target = this; 导致msg持有handler,而handler持有activity(内部类持有外部类的对象),而msg又在外部类的生命周期内。导致内存泄漏保证looper线程唯一:ThreadLocal static final ThreadLocal<Looper> sThreadLocal = new ThreadLocal<Looper>(); final MessageQueue mQ原创 2022-04-10 19:31:05 · 1891 阅读 · 0 评论 -
【Android】系统架构功能+init、zygote、system server、app等进程间关系分析
文章目录架构功能Loader层Linux内核层硬件抽象层 (HAL)Android Runtime & 系统库Framework层App层Syscall && JNI进程关系init进程Zygote进程自动重启机制fork机制system_server进程app进程概览:http://gityuan.com/android/Android系统启动过程由上图从下往上的一个过程是由Boot Loader引导开机,然后依次进入 -> Kernel -> Native -&原创 2022-04-10 15:57:35 · 3900 阅读 · 0 评论 -
【Android】安装Android Studio、破解Source Insight+查看Android Framework源码
准备1.工具安装Source Insight工具就不多介绍了,下载并破解:2.Framework源码下载google已经把framework源码托管在了gitHub上: https://github.com/android/platform_frameworks_base3.加载源码① 菜单栏->Project->New Project:② 选择需要导入的源码,咱们直接add Tree遍历文件夹下的所有文件并加入工程:③ 开始使用:1.这里我输入ActivityThrea原创 2022-04-01 09:55:01 · 3031 阅读 · 0 评论