Android的四大组件中除了BroadCastReceiver以外,其他三种组件都必须在AndroidManifest中注册,对于BroadCastReceiver来说,它既可以在AndroidManifest中注册也可以通过代码来注册,在调用方式上,Activity、Service和BroadCastReceiver需要借助Intent,而ContentProvider则无需借助Intent。

Activity是一种展示型组件,用于向用户直接展示一个界面,并且可以接收用户的输入信息从而进行交互,对于用户来说,Activity就是一个Android应用的全部,这是因为其他三大组件对用户来说都是不可感知的。Activity的启动由Intent触发,其中Intent可以分为显式Intent和隐式Intent,显式Intent可以明确地指向一个Activity组件,隐式Intent则指向一个或多个目标Activity组件,当然也有可能没有一个Activity组件处理这个Intent。

Activity的工作过程

要分析Activity的启动过程,就需要从startActivity方法开始分析,startActivity方法有好几种重载方式,但是最终都会调用startActivityForResult方法,具体代码如下:

/**     * @hide     */
    @Override
    public void startActivityForResult(
            String who, Intent intent, int requestCode, @Nullable Bundle options) {
        Uri referrer = onProvideReferrer();        if (referrer != null) {
            intent.putExtra(Intent.EXTRA_REFERRER, referrer);
        }
        options = transferSpringboardActivityOptions(options);
        Instrumentation.ActivityResult ar =
            mInstrumentation.execStartActivity(                this, mMainThread.getApplicationThread(), mToken, who,
                intent, requestCode, options);        if (ar != null) {
            mMainThread.sendActivityResult(
   &nbs
        
		

网友评论