面試官:“來,說一下Android中的顯式Intent 和 隱式Intent吧!”
嗯,乍一聽覺得這麼簡單你讓我說什麼呢?
但是,沒辦法,面試往往面的就是基礎不是嘛。
我整理了以下幾點:
1.顯式Intent
首先 顯式Intent 要明確目標Activity的類名。
它主要有3種使用方式
這裏我們還可以從源碼的角度提一下:第②種方式setClass()、setClassName()其實本質上還是調用的 new ComponentName()對應的方法.
2.隱式Intent
然後我們來說說隱式Intent:
隱式Intent是通過在AndroidManifest
文件中設置action
、data
、category
,讓系統來篩選出合適的Activity。(篩選是根據所有的intent-filter
來篩選的)
隱式Intent可以用來啓動外部的應用,比如說:
我們再點進源碼來看一下 ACTION_DIAL 到底是什麼:
如果我把自己的Activity的action,改成和系統的一樣,會出現什麼情況呢?
我們還是使用
Intent intent = new Intent(Intent.ACTION_DIAL);
startActivity(intent);
來直接啓動。
結果是:會同時彈出2個讓你選。
因爲隱式Intent只負責通過action給你找,如果找到就給你返回,如果找到了多個,它就會同時返回多個,讓用戶自己去選擇。
最後總結:
在同一個項目中,我們一般是使用顯式Intent。
如果我們想創建一個Activity給外部的應用使用,那我們就需要用隱式Intent.