Android的四大組件中除了BroadCastReceiver以外,其他三種組件都必須在AndroidManifest中注冊,對于BroadCastReceiver來說,它既可以在AndroidManifest中注冊也可以通過代碼來注冊,在調(diào)用方式上,Activity、Service和BroadCastReceiver需要借助Intent,而ContentProvider則無需借助Intent。

Activity是一種展示型組件,用于向用戶直接展示一個界面,并且可以接收用戶的輸入信息從而進行交互,對于用戶來說,Activity就是一個Android應(yīng)用的全部,這是因為其他三大組件對用戶來說都是不可感知的。Activity的啟動由Intent觸發(fā),其中Intent可以分為顯式Intent和隱式Intent,顯式Intent可以明確地指向一個Activity組件,隱式Intent則指向一個或多個目標(biāo)Activity組件,當(dāng)然也有可能沒有一個Activity組件處理這個Intent。

Activity的工作過程

要分析Activity的啟動過程,就需要從startActivity方法開始分析,startActivity方法有好幾種重載方式,但是最終都會調(diào)用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
        
		

網(wǎng)友評論