Android技術20:Android的初始化流程,android初始化
Android系統是如何啟動的呢,應用程式是如何啟動。下面簡要介紹下初始化流程。
1.Android系統的初始化
1.1Android系統會首先啟動Linux基礎系統,然後引導載入Linux核心並啟動初始化進程Init
Linux Kernel---->Init(pid=1)
1.2啟動守護進程Daemons
啟動Usb守護進程,管理USB串連
啟動Android Debug Bridge守護進程管理ADB串連
啟動Debuggerd Debug守護進程
啟動無線介面守護進程管理無線通訊
1.3啟動守護進程的同時,會啟動Zygote進程
建立初始化Dalvik初始化執行個體
載入socket請求的需要的類和監聽
建立虛擬機器執行個體來管理應用程式的進程
| Daemons
init----
| Zygote
1.4接下來,初始化Runtime進程
初始化服務管理員Service Manager
註冊服務管理員,以它作為預設的Binder服務Context管理器
1.5啟動系統服務System Service
Runtime向Zygote發送一個請求,Zygote為系統服務建立一個Dalvik虛擬機器執行個體,並啟動系統服務,系統服務將啟動原生系統服務,主要包括Audio Flinger和Surface Flinger,這些本地系統服務將註冊到服務管理員。系統服務將啟動Android管理服務,將管理服務都被註冊到服務管理員上。
1.6系統載入完成,等待應用程式啟動
1.7Activity Manager管理器向Zygote發出一個Socket請求,Zygote通過fork機制建立一個Dalvik虛擬機器進程,來運行應用程式
所有的應用程式進程都是Zygote進程的子進程,每一個應用程式一個進程一個虛擬機器。
android怎一次初始化20個button,並且還要設定好每個按鈕的不同監聽事件
public class MyView extends LinearLayout implements View.OnClickListener{
private Context mContext;
public MyView(Context context) {
super(context);
// TODO Auto-generated constructor stub
mContext = context;
}
private void make20Buttons(){
int i = 0;
while(i<20){
Button button = new Button(mContext);
button.setTag(i);
button.setOnClickListener(this);
this.addView(button);
i++;
}
}
@Override
public void onClick(View button) {
// TODO Auto-generated method stub
if(button instanceof Button){
switch ((Integer)button.getTag()) {
case 0:
break;
case 1:
break;
case 20:
break;
default:
break;
}
}
}
}
怎在android程式執行初始化的時彈出一個PopupWindow 觸發的事件是在初始化的時
new一個Handler變數,在OnCreate裡面通過這個Handler去發送訊息,handler在Onmessage裡面收到訊息後,在show出來就可以了;類似的情況還有在oncreate裡面不能顯示toast之類的,要用線程去處理