Android四大组件的工作过程

概述

这里只分析一般过程,不涉及具体的源码分析。

Activity的启动过程

网图侵删

  • 很明显,Activity的启动过程涉及到了IPC,其实四大组件的启动过程都和IPC有关。
  • ActivityManagerService、ApplicationThread都是Binder,ApplicationTread完成了大量的Activity和Service的启动/停止相关的功能。
  • Handler H对消息的处理会调用handleLaunchActivity()->performLaunchActivity()得以最终完成Activity的创建和启动。

Service

Service的启动过程

网图侵删

Service绑定过程

在这里插入图片描述

  • ContextImpl是Context的具体实现,通过Activity.attach()和Activity建立关联,是典型的桥接模式。
  • ServiceRecord贯穿整个Service的启动过程。
  • 与Activity的启动过程类似,与AMS发生了IPC,最后回到ApplicationThread中,通过发送消息给H来完成最终的启动。

ContentProvider

ContentProvider的启动过程

在这里插入图片描述

ContentProvider的query过程

在这里插入图片描述

  • 当ContentProvider所在的进程启动时,ContentProvider会同时启动并发布到AMS中。这时ContentProvider的onCreate要先于Application的onCreate而执行。
  • 一般ContentProvider都是单实例的,这时由android:multipleprocess属性决定的,默认为false
  • 访问ContentProvider需要ContentResolver,其真正实现类是ApplicationContentResolver。当ContentProvider所在进程未启动时,第一次访问它会触发ContentProvider的创建以及进程启动。

BroadcastReceiver

广播注册过程

在这里插入图片描述

广播接收/发送过程

在这里插入图片描述

  • 静态注册和其他三大组件的注册在应用安装时由系统自动完成,具体来说是由PMS(PackageManagerService)来完成的。
  • 动态注册广播最终会跨进程交给AMS,并把远程Receiver( 实际上传的是IIntentReceiver,是个Binder )对象和远程IntentFilter保存起来,完成注册任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值