1. 程式人生 > >App啟動過程簡述

App啟動過程簡述

Android框架架構圖:
這裡寫圖片描述
從Linux系統到Android應用層系統啟動步驟:
(1) init程序啟動—>(2) Native服務啟動—->(3) System Server,Android服務啟動—>(4) Home啟動

這裡寫圖片描述
* 上述簡圖就可以很好的說明App啟動的過程
* 1. ActivityManagerService組織回退棧時以ActivityRecord為基本單位,所有的ActivityRecord放在同一個ArrayList裡,可以將mHistory看作一個棧物件,索引0所指的物件位於棧底,索引mHistory.size()-1所指的物件位於棧頂
* 2. Zygote程序孵化出新的應用程序後,會執行ActivityThread類的main方法.在該方法裡會先準備好Looper和訊息佇列,然後呼叫attach方法將應用程序繫結到ActivityManagerService,然後進入loop迴圈,不斷地讀取訊息佇列裡的訊息,並分發訊息。
* 3. ActivityThread的main方法執行後,應用程序接下來通知ActivityManagerService應用程序已啟動,ActivityManagerService儲存應用程序的一個代理物件,這樣ActivityManagerService可以通過這個代理物件控制應用程序,然後ActivityManagerService通知應用程序

建立入口Activity的例項,並執行它的生命週期方法。

相關推薦

App啟動過程簡述

Android框架架構圖: 從Linux系統到Android應用層系統啟動步驟: (1) init程序啟動—>(2) Native服務啟動—->(3) System Server,A

Flask學習-Flask app啟動過程

als sock 一個 sources host .html 執行 session targe 因為0.1版本整體代碼大概只有350行,比較簡單。所以本篇文章會以Flask 0.1版本源碼為基礎進行剖析Flask應用的啟動過程。 Flask參考資料flask,官網有一個最

【iOS】詳解APP啟動過程

我們都知道,程式的入口是main函式,在用C寫程式碼的時候,都會有個mian函式,但是在OC中,在.m檔案中,我們最常看到的是viewDidLoad()。對於剛從C轉OC的人來說,剛開始有些蒙。其實,OC中也是有mian函式的,只是不實那麼明顯。     1、先執行m

Android小知識-ActivityManagerService詳解(APP啟動過程)

前言 AMS(ActivityManagerService)的啟動是在SystemServer程序中啟動的,它的職責是用於和所有APP的四大元件進行通訊,Activity的啟動過程就是APP端與AMS端進行通訊,首先理解的一點是APP端與AMS是在兩個不同的程序中,因此APP端與AMS是通過跨程序通訊的。

Android AMS(三) App啟動過程之onResume

在Android AMS(二) App啟動過程之onCreate中我們講了onCreate的呼叫流程,這篇我們接著分析onResume的流程 ActivityThread.java-->handleLaunchActivity()中呼叫performLaunchActivity()走到ac

Android AMS(二) App啟動過程之onCreate

在Android AMS(一) App啟動過程之Task,程序建立流程中我們講到了Process.start,在這裡會通過zygote啟動程序,通過反射呼叫ActivityThread的main函式 public static void main(String[] args) {

ionic+angularJs的App啟動過程

Ionic既是一個CSS框架也是一個Javascript UI庫。許多元件需要Javascript才能產生神奇的效果,儘管通常元件不需要編碼,通過框架擴充套件可以很容易地使用,Ionic 是目前最有

Linux啟動過程簡述

clas pan inittab 硬盤 color 加載內核 系統初始 rc.d con linux啟動過程: 1. 開機BIOS自檢(硬件:CPU,主板,內存);結束交給硬盤 2. MBR 引導(硬盤) 硬盤0柱面0磁

Android應用程式啟動詳解(二)從原始碼瞭解App啟動過程

本文承接《Android應用程式啟動詳解(一)》繼續來學習應用程式的啟動的那些事。上文提到startActivity()方法啟動一個app後經過一翻過程就到了app的入口方法ActivityThread.main()。其實我們在之前的文章中《Android的訊息機制(二)之L

Android App啟動過程簡析

首先,在APK檔案安裝的時候,PackageManager會解析APK中重要的AndroidManifest.xml檔案,你在AndroidManifest.xml中註冊過的所有Activity和Service等四大元件的資訊,也就會在此刻被PM獲取到並存儲起來。 當你在

專案啟動過程中出現:已經為元素 "web-app" 指定屬性 "xmlns"。

原本正常執行的專案,由於專案需要修改了專案名稱,然後再次啟動的時候就報了這個錯,而且專案無法正常使用,後面發現是web.xml<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="h

專案總結3:ionic3開發的App啟動過程中部分手機出現白屏或黑屏問題之終極解決方案

問題場景:採用ionic3開發的App,當專案比較大的時候,會出現部分真機裝置在啟動的過程中有白屏或黑屏的情況。 原因預測:個別手機,尤其是安卓手機的效能比較差,App在啟動後進入首頁或登入頁前的初始化工作還沒有完成。 方案總結:在網上查過很多資料發現大部分的解決辦法都是

深入理解iOS App啟動過程

前言 啟動時間是衡量應用品質的重要指標。 本文首先會從原理上出發,講解iOS系統是如何啟動App的,然後從main函式之前和main函式之後兩個角度去分析如何優化啟動時間。 準備知識 Mach-O 哪些名詞指的是Mach-o Exe

ORACLE 啟動過程

命名 獲得 red 參數 失敗 一個數據庫 技術 文件中 file 1  STARTUP NOMOUNT   1.讀取環境變量下dbs目錄下的參數文件(spfile/pfile)     查找參數文件的順序如上面列表的,讀取優先級:       spfilechong

【轉】Android 4.0 Launcher2源碼分析——啟動過程分析

handler flag 這一 第一次啟動 asynctask pla size ontouch wait Android的應用程序的入口定義在AndroidManifest.xml文件中可以找出:[html] <manifest xmlns:android="htt

Spring容器啟動過程

spring啟動搞了一年多的Java了,每個項目都在用Spring,這幾天沒事看了看Spring源碼,總結了下Spring容器的啟動過程,想把它記錄下來,免得忘了spring容器的啟動方式有兩種:1、自己提供ApplicationContext自己創建Spring容器2、Web項目中在web.xml中配置監聽

深入理解 JBoss 7/WildFly Domain 模式啟動過程

ket builder 代碼調試 ref finished rop mas stopped rgs 概述JBoss 7/WildFly 以 domain 模式啟動時會啟動多個 JVM。比如例如以下通過啟動腳本啟動 domain 模式:./domain.sh啟動後我們查看進

【Java】【Flume】Flume-NG啟動過程源代碼分析(一)

code extends fix tar top 依據 oid article gif 從bin/flume 這個shell腳本能夠看到Flume的起始於org.apache.flume.node.Application類,這是flume的main函數所在。   m

iOS程序的啟動過程

run 技術分享 plist文件 屬性 對象賦值 進行 執行 lease har UIApplicationMain main函數中執行了一個UIApplicationMain這個函數 int UIApplicationMain(int argc, char *ar

在混合app開發過程中使用百度地圖api的出現坐標偏差的解決

百度 api call cordova overlay forum gpo ext ddr 在項目中使用ngCordova的$cordovaGeolocation模塊獲取當前位置經緯度,當展示在百度地圖中時發現有誤差(我的測試誤差為1.7公裏左右),查資料發現百度地圖經緯度