Android 开发艺术探索读书笔记 9 -- 四大组件的工作流程

本篇文章什么也没记录

hello,夏天 (图片来源于网络)

Android 中的四大组件:ActivityServiceBroadcastReceiverContentProvider

9.1 四大组件的运行状态

四大组件中 BroadcastReceiver 可在 AndroidManifest 中或代码中注册,而其他三种必须在 AndroidManifest 中注册。调用方式除 ContentProvider 外均需借助 Intent

Activity 展示型组件,用于向用户展示一个界面,可接收用户的输入信息进行交互。

Service 计算型组件,用于在后台执行一系列计算任务。有启动和绑定两种状态。

BroadcastReceiver 消息型组件,用于在不同组件或应用间传递消息。

ContentProvider 数据共享型组件,用于向其他组件或应用共享数据。

9.2 Activity 的工作过程

启动 Activity 很简单,显示调用如下即可完成:

Intent intent = new Intent(this, TestActivity.class);
startActivity(intent);

上面的 startActivity 有好几种重载方式,但最终都会调用 startActivityForResult,其实现如下:

    public void startActivityForResult(@RequiresPermission Intent intent, int requestCode,
            @Nullable Bundle options) {
        // mParent 代表的是 ActivityGroup
        if (mParent == null) {
            options = transferSpringboardActivityOptions(options);
            // 参数 mMainThread.getApplicationThread() 的类型是 ApplicationThread,
            // 在启动过程中发挥着重要作用
            Instrumentation.ActivityResult ar =
                mInstrumentation.execStartActivity(
                    this, mMainThread.getApplicationThread(), mToken, this,
                    intent, requestCode, options);

            . . .

            cancelInputsAndStartExitTransition(options);
        } else {
          . . .
        }
    }

接着看一下 InstrumentationexecStartActivity 如下:

...

由于书上的源码是比较老的,新的都找不到了这个方法了。

源码分析。。。

9.3 Service 的工作过程

源码分析。。。

9.4 BroadcastReceiver 的工作过程

源码分析。。。

9.5 ContentProvider 的工作过程

源码分析。。。

本章完。

推荐阅读更多精彩内容