四大组件及其启动流程

9.1 四大组件的运行状态
Android四大组件中除了BroadcastReceiver以外,其他三种组件都必须在Manifest中注册,广播可以静态注册或者动态注册;
Activity:是一种展示型组件,用于向用户直接地显示一个界面,并且可以接受用户的输入信息从而进行交互,Activity由intent触发,其中Intent可以分为显示Intent,和隐式Intent,同一个Activity在不同的启动模式下会有不同的效果
Service:是一种计算型组件,用于在后台执行一系列计算任务,Service有启动状态和绑定状态,当Service组件处于启动状态,Service可以做一些后台计算,并且不需要和外界有直接的交互,当Service处于绑定状态,这个时候Service内部同样可以进行后台计算,但是处于这种状态可以很方便的外界进行通信。
BroadcastReceiver:是一种消息型组件,用于在不同的组件乃至不同的应用之间传递消息,广播的注册方式有两种:静态注册和动态注册。静态注册是指在Mannifest中注册,这种方式注册的广播会在应用安装时被系统解析,此种形式的广播不需要应用启动就能收到广播。动态广播需要需要通过context.registerReceiver来注册,并且在不需要的时候需要context.unregisterReceiver来解注册,此种形态的广播需要应用启动才能注册并且接收广播。
ContentProvider:是一种消息共享型组件,用于向其他组件乃至其他应用共享数据,它的内部需要通过增删改查来实现。
Activity.startActivity->Activity.startActivityForResult->Instrumentation.execStartActivity
->ActivityManagerNative.getDefalut.startActivity->IPC->服务端AMS.startActivity->进入ActivityStackSupervisor和ActivityStack的方法调用链->ActivityStackSupervisor.reStartActivityLocked
->ApplicationThreadProxy.scheduleLaunchActivity->IPC->ApplicationThread.scheduleLaunchActivity
->Handler->ActivityThread.handleLaunchActivity->ActivityThread.performLaunchActivity;

客户端:ActivityManagerProxy =====>Binder驱动=====> ActivityManagerService:服务器
客户端:ApplicationThread <=====Binder驱动<===== ApplicationThreadProxy:服务器

abstract ActivityManagerNative extends Binder implements IActivityManager:相当于Stub
ActivityManagerProxy implements IActivityManager:Proxy代理类ActivityManagerService extends ActivityManagerNative:AMS,Stub的实现类
IActivityManager:AIDL接口

abstract ApplicationThreadNative extends Binder implements IApplicationThread:相当于Stub ApplicationThreadProxy implements IApplicationThread :Proxy代理类,服务端,ActivityThreadNative内部类
ApplicationThread extends ApplicationThreadNative: Stub的实现类,客户端,Activity内部类
IApplicationThread:AIDL接口

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • AndroidSmall框架是android中一个非常优秀的插件化框架,有时我们不仅要学会使用它,也要去理解它的原...
    柴犬大人阅读 5,078评论 0 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,803评论 19 139
  • HandlerThread是一个Android 已封装好的轻量级异步类。HandlerThread本质上是一个线程...
    kjy_112233阅读 5,254评论 0 9
  • “你听说了吗?我们公司前几天又有人失踪了,跟以前一样活不见人死不见尸的!你们说会不会有什么脏东西啊?”某饭店里面,...
    飞猫君阅读 3,696评论 0 0
  • 边境的美好日子 中苏边境线上,漫长的寒冬,苏军战士们一般待在营帐里面。在这个漫长的国境上,延绵的营帐形成了一道亮丽...
    a48927c4b670阅读 2,350评论 0 2

友情链接更多精彩内容