美文网首页
四大组件及其启动流程

四大组件及其启动流程

作者: shuixingge | 来源:发表于2016-05-11 15:07 被阅读90次

    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接口

    相关文章

      网友评论

          本文标题:四大组件及其启动流程

          本文链接:https://www.haomeiwen.com/subject/kolurttx.html