App啟動(一)Application的建立

2021-10-07 11:18:39 字數 2814 閱讀 5103

public

static

void

main

(string[

] args)

很明顯這裡使用了handler機制,先初始化looper,然後例項化乙個activitythread物件,而activitythread類有乙個hhandler的子類)型別的變數mh,並進行了例項化,而後面則是呼叫looper.loop()開啟了訊息迴圈。

public

void

attach

(boolean system)

catch

(remoteexception ex)..

.}

首先我們拿到了乙個iactivitymanager的例項,它是通過activitymanager.getservice()獲取到的

我們看下activitymanager.getservice()相關的原始碼

public

static iactivitymanager getservice()

private

static

final singleton

iactivitymanagersingleton =

newsingleton

()};

可以看到iactivitymanager的例項是乙個activitymanagerservice通過binder機制得到的遠端物件,而activitymanagerservice即ams是執行在系統程序,主要完成管理應用程序的生命週期以及程序的activityservicebroadcastprovider等。

public

final

class

activitythread

public

static

void

main

(string[

] args)

}

public

final

void

list

providers, componentname instrumentationname,

profilerinfo profilerinfo, bundle instrumentationargs,

iinstrumentationwatcher instrumentationwatcher,

iuiautomationconnection instrumentationuiconnection,

int debugmode,

boolean enablebindertracking,

boolean trackallocation,

boolean isrestrictedbackupmode,

boolean persistent, configuration config,

compatibilityinfo compatinfo, map services, bundle coresettings,

string buildserial)

private

void

sendmessage

(int what, object obj)

private

void

sendmessage

(int what, object obj,

int arg1,

int arg2,

boolean async)

mh.sendmessage

(msg)

;}

我們知道handlerhandlemessage方法裡進行訊息處理

Moblin 建立第乙個application

在netbook上安裝了 moblin 2有好幾天,網路不太好用,應該說還很有問題,出現下面兩種情況 一 無線網路能夠配置並且正常使用,密碼那裡設定為儲存。後來我們的ap修改了密碼,但是無線網路一直在連 當然是連不上 不能退出到配置密碼的地方,而提供的gnome配置介面也無法進入相關配置。嘿,就是無...

app啟動過程

apk程式的執行過程 首先,activitythread從static main 函式開始,呼叫preparemainlooper 為ui執行緒建立乙個訊息對列 messagequeue binder負責接遠端ams的ipc呼叫,收到訊息後,通過handler將訊息傳送到訊息佇列,ui主線程會非同步...

APP啟動過程

activitymanagerservice組織回退棧時以activityrecord為基本單位,所有的activityrecord放在同乙個arraylist裡,可以將mhistory看作乙個棧物件,索引0所指的物件位於棧底,索引mhistory.size 1所指的物件位於棧頂 zygote程序孵...