1. 程式人生 > >android apk的執行過程

android apk的執行過程

acitivtyThread從main函式開始執行,呼叫prepareMainLooper(),為ui執行緒建立一個訊息佇列,然後建立一個ActivityThread物件,在activityThread的初始化程式碼中會建立一個handlerapplicationThread(binder)物件,接著UI執行緒呼叫Looper.loop()方法進入訊息迴圈體,然後不斷的從訊息佇列中讀取並處理訊息。當activityThread接收到Ams傳送的啟動某個activity後,就會建立acitivty物件,acitivty物件會建立phoneWindow類,--DecorView類---建立響應的view和ViewGroup,建立完後,activity把建立好的頁面展示到螢幕上,然後呼叫windowManager類,建立一個ViewRoot物件,該物件實際建立了ViewRoot類和W類,建立完後,windowMnager呼叫wms提供的遠端介面,完成新增一個視窗並顯示到螢幕上;如果使用者在程式介面上操作,keyQ執行緒會不斷的把使用者的訊息儲存到queueEvent佇列中,inputDispatherThrad執行緒逐個取出,然後呼叫WMS中相應的函式處理訊息,當Wms發現該訊息屬於某個視窗時,就會呼叫W介面;w類是一個binder,負責接收Wms的ipc呼叫,並把呼叫訊息傳遞給viewRoot,viewRoot再把訊息傳遞給UI主執行緒ActivityThread,並作出相應的處理,首先處理訊息的是DecorView,如果DecorView不想處理,將訊息傳遞給內部的子View或者ViewGroup,如果還沒處理,就傳遞給phoneWindow,最後傳遞給acitivty;