1. 程式人生 > >Android面試準備 第三天 第六例 Android應用啟動原理

Android面試準備 第三天 第六例 Android應用啟動原理

8、 啟動一個程式,可以主介面點選圖示進入,也可以從一個程式中跳轉過去,二者有什麼區別?

個人理解:首先關於從圖示的進入的操作,是個理所當然的行為,但是對於菜鳥的我,對於後臺執行的機制,可以明確的就是圖示點選後,Android系統層面會去讀取該App中AndroidManifest檔案,這個檔案又叫註冊清單,是App所使用到的四大元件一個宣告檔案,在該檔案中為所有使用到的元件宣告相關資訊,可以起到導航的作用,可以提高程式執行的效率,類似飯館中提供的選單;在這個檔案中必須提供一個主活動元件,即活動中意圖過濾器(intent-filter)的action為Main,可以簡單的看做是把這個活動標識為主活動,這樣話就類似了我們Java執行機制,會去查詢Main函式,然後根據主活動類的定義程式碼,在記憶體中建立該物件,回撥一系列方法,最後通過不同元件功能的集合形成一個可用的軟體。而從外部程式跳轉到另一個程式也是Android明確提供該手段的,這個功能實現的前提,我覺的基於Android系統上所有的

App的註冊清單相互訪問許可權是完全共享的,而Android提供了隱式Intent可以通過設定它action值,這樣根據action值去所有App的註冊清單中去匹配對應的活動,後面啟動方式和圖示進入應該是差不多的。所謂我覺的沒有什麼差別,僅是入口不一樣,這道題就考核對於

APP啟動原理的瞭解。

標準答案:

是因為啟動程式(主介面也是一個app),發現了在這個程式中存在一個設定為<category android:name="android.intent.category.LAUNCHER" />的activity,所以這個launcher會把icon提出來,放在主介面上。當用戶點選icon的時候,發出一個Intent:

Intent intent = mActivity.getPackageManager().getLaunchIntentForPackage(packageName);mActivity.startActivity(intent);   跳過去可以跳到任意允許的頁面,如一個程式可以下載,那麼真正下載的頁面可能不是首頁(也有可能是首頁),這時還是構造一個Intent,startActivity.這個intent中的action可能有多種view,download都有可能。系統會根據第三方程式向系統註冊的功能,為你的Intent選擇可以開啟的程式或者頁面。所以唯一的一點不同的是從icon的點選啟動的intent的action是相對單一的,從程式中跳轉或者啟動可能樣式更多一些。本質是相同的。

二次理解:標準答案的內容太多雜亂,無法提煉。