本篇文章什么也没记录

Android 中的四大组件:Activity
、Service
、BroadcastReceiver
、ContentProvider
。
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 {
. . .
}
}
接着看一下 Instrumentation
的 execStartActivity
如下:
...
由于书上的源码是比较老的,新的都找不到了这个方法了。
源码分析。。。
9.3 Service 的工作过程
源码分析。。。
9.4 BroadcastReceiver 的工作过程
源码分析。。。
9.5 ContentProvider 的工作过程
源码分析。。。
本章完。
网友评论