Android面試專題 (十一):顯式Intent & 隱式Intent

面試官:“來,說一下Android中的顯式Intent 和 隱式Intent吧!”

嗯,乍一聽覺得這麼簡單你讓我說什麼呢?

但是,沒辦法,面試往往面的就是基礎不是嘛。

我整理了以下幾點:

1.顯式Intent

首先 顯式Intent 要明確目標Activity的類名。

它主要有3種使用方式
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
這裏我們還可以從源碼的角度提一下:第②種方式setClass()、setClassName()其實本質上還是調用的 new ComponentName()對應的方法.
在這裏插入圖片描述
在這裏插入圖片描述

2.隱式Intent

然後我們來說說隱式Intent:

隱式Intent是通過在AndroidManifest文件中設置actiondatacategory,讓系統來篩選出合適的Activity。(篩選是根據所有的intent-filter來篩選的)
在這裏插入圖片描述

隱式Intent可以用來啓動外部的應用,比如說:
在這裏插入圖片描述
我們再點進源碼來看一下 ACTION_DIAL 到底是什麼:
在這裏插入圖片描述

如果我把自己的Activity的action,改成和系統的一樣,會出現什麼情況呢?
在這裏插入圖片描述
我們還是使用

Intent intent = new Intent(Intent.ACTION_DIAL);
startActivity(intent);

來直接啓動。

結果是:會同時彈出2個讓你選。

因爲隱式Intent只負責通過action給你找,如果找到就給你返回,如果找到了多個,它就會同時返回多個,讓用戶自己去選擇。

最後總結:

在同一個項目中,我們一般是使用顯式Intent。

如果我們想創建一個Activity給外部的應用使用,那我們就需要用隱式Intent.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章