public
static
void
main
(string[
] args)
很明顯這裡使用了handler
機制,先初始化looper
,然後例項化乙個activitythread
物件,而activitythread
類有乙個h
(handler
的子類)型別的變數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是執行在系統程序,主要完成管理應用程序的生命週期以及程序的activity
,service
,broadcast
和provider
等。
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)
;}
我們知道handler
在handlemessage
方法裡進行訊息處理
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程序孵...