7 activity生命周期
docs/index.html
1、onCreate:第一次被啟動、
2、onStart:activity可視時調(diào)用、
3、onResume:activity獲得用戶焦點是被調(diào)用、
4、onPause:啟動另外一個activity時被調(diào)用、
5、onStop:另一個activity啟動完成后被調(diào)用(第一個Activity處于不可見的狀態(tài))、
若啟動另外一個activity時,onStop方法未執(zhí)行,當重新回到第一個activity時直接調(diào)用OnResume
6、onRestart:第一個activity未被銷毀前又重新啟動時被調(diào)用,執(zhí)行完之后繼續(xù)執(zhí)行onStart
7、onDestroy:activity代碼中執(zhí)行finish方法時或者android系統(tǒng)資源不夠用時自動銷毀時調(diào)用 窗口形態(tài)的activity
在manifest.xml中定義activity時指定android:theme="@android:style/Theme.Dialog"即可 activity還要考慮能否被kill掉,資源被系統(tǒng)回收,(被調(diào)用onPause onStop onDestroy的activity有可能被資源緊缺的系統(tǒng)所銷毀) Task
存放多個activity的棧 五、handler的使用
線程的生命周期:就緒、運行、阻塞、死亡 1、創(chuàng)建一個handler對象:
Handler handler = new Handler();
2、調(diào)用post方法
handler.post(updateThread);//把線程updateThread放入消息隊列中去
3、定義線程,并在run方法內(nèi)部執(zhí)行postDelayed或post方法繼續(xù)循環(huán)
Runnable updateThread = new Runnable(){
public void run(){
//執(zhí)行自定義操作
//過3000毫秒后再把線程放入消息隊列中去被調(diào)用執(zhí)行 handler.postDelayed(updateThread,3000);
}
};
4、調(diào)用removeCallbacks
handler.removeCallnacks(updateThread);//從消息隊列中移除線程,結(jié)束handler
執(zhí)行
handler.post(updateThread);
1、
Runnable updateThread = new Runnable(){
public void run(){
i =+ 10; //得到一個消息對象,Message類是由android系統(tǒng)提供
Message msg = handler.obtainMessage();
msg.arg1 = i;
//將msg加入到消息隊列中,然后會異步的執(zhí)行handler的handleMessage方法取出消息
handler.sendMessage(msg);
if(i == 100){
handler.removeCallbacks(updateTread);
}
}
}; 2、使用匿名內(nèi)部類復寫Handler的handleMessage,取出消息隊列中的Message對象
Handler handler = new Handler(){
public void handleMessage(Message msg){
bar.setBarProgress(msg.arg1);
//將線程繼續(xù)加入到隊列當中
handler.post(updateThread);
}
}; 以上處理線程的過程中并沒有建立新的線程,而是直接執(zhí)行當前activity線程的run方法,若用以下方法,則定義一個新的線程并去執(zhí)行新線程
Thread t = new Thread(r)
t.start();
Runnable updateThread = new Runnable(){
public void run(){}
}; </div |