Android 四大组件之——Acitivity(三) 深入了解Activity的启动流程
生活随笔
收集整理的這篇文章主要介紹了
Android 四大组件之——Acitivity(三) 深入了解Activity的启动流程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
上圖為整個Activity的啟動流程
接下來我們大概分析
?在我們的Android系統中,應用程序是由Launcher這個應用啟動起來的。當我們安裝好應用程序之后,就會在Launcher的界面上生成一個圖標,我們點擊圖標時Launch就會啟動我們的應用程序。
1.點擊圖標,launcher調用onClick方法
/*** * * @param v The view representing the clicked shortcut. 1.此處的view是指被點擊的桌面圖標*/public void onClick(View v) {// Make sure that rogue clicks don't get through while allapps is// launching, or after the// view has detached (it's possible for this to happen if the view is// removed mid touch).if (v.getWindowToken() == null) {return;}if (!mWorkspace.isFinishedSwitchingState()) {return;}Object tag = v.getTag();if (tag instanceof ShortcutInfo) {// 打開快捷方式對應的intentfinal Intent intent = ((ShortcutInfo) tag).intent;int[] pos = new int[2];v.getLocationOnScreen(pos);intent.setSourceBounds(new Rect(pos[0], pos[1], pos[0]+ v.getWidth(), pos[1] + v.getHeight()));boolean success = startActivitySafely(v, intent, tag);//2.同時調用startActivitySafelyif (success && v instanceof BubbleTextView) {mWaitingForResume = (BubbleTextView) v;mWaitingForResume.setStayPressed(true);}} else if (tag instanceof FolderInfo) {if (v instanceof FolderIcon) {// 打開文件夾FolderIcon fi = (FolderIcon) v;handleFolderClick(fi);}} else if (v == mAllAppsButton) {// 顯示或者不顯示“全部程序”界面if (isAllAppsVisible()) {showWorkspace(true);} else {onClickAllAppsButton(v);}}}
4.目標應用的進程通過loadClass加載MainActivity,然后通過H(handler)來控制MainActivity的生命周期
總結
以上是生活随笔為你收集整理的Android 四大组件之——Acitivity(三) 深入了解Activity的启动流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 四大组件之——Aciti
- 下一篇: Android 四大组件之——Aciti