Android中各種元件的生命週期

2021-07-02 11:47:14 字數 2358 閱讀 3616

1,activty生命週期

2,service生命週期

3,broadcastreceiver生命週期

4,thread生命週期

1,activity的生命週期

乙個activity就相當於乙個單獨的介面,類似於web中的一張網頁。

activity一共有四個狀態:

active:在螢幕最前端,處於棧的最頂端

paused:被乙個activiy覆蓋,比如dialog,仍然可見

stoped:被乙個activity覆蓋,不可見

killed:被系統殺死

activity的生命週期有七個過程:

oncreate():

onstart():

oncreate後就會執行onstart。另外當activity被交換到後台後,在使用者從新檢視窗體前已經過去了一段時間,窗體已經執行了onstop()事件,但是窗體和其所在程序並沒有被銷毀,那麼使用者再次檢視窗體的時候就會跳過oncreate而執行onstart()事件。

onresume():

onstart()後就執行onresume()事件。另外當activity被交換到後台後,使用者重新檢視時,如果既沒有執行過ondestroy,也沒有執行過onstop事件,那麼會跳過oncreate()和onstart()事件,直接執行onresume();

onpause():

窗體交換到後台的時候執行onpause()事件

onstop():

onpause事件後就執行onstop()事件。當使用者一段時間沒有再次重新檢視該窗體,則onstop事件就會執行。或者使用者直接按了back按鍵,也就執行onstop()事件。

ondestroy():

activity銷毀的時候執行ondestroy()事件。在窗體的onstop()事件之後,如果沒有再次檢視該窗體,activity則會被銷毀

2,service的生命週期

首先啟動service的方式有兩種,不同的啟動方式使其生命週期有所不同,如下:

context.startservice():

呼叫者和服務之間沒有聯絡,即使呼叫者退出了,服務依然在進行【oncreate()-  >onstartcommand()->startservice()->ondestroy()】,注意其中沒有 onstart()(ps:sdk2.0以後就不推薦用這個方法了),主要是被onstartcommand()方法給取代了。

如果service還沒有執行 那麼會先執行oncreate(),接著執行onstartcommand(),但是如果service已經執行了那麼就直接執行onstartcommand()方法了,而不會再次執行oncreate()方法了。

context.bindservice():

呼叫者和繫結者綁在一起,呼叫者一旦退出服務也就終止了【oncreate()->onbind()->onunbind()->ondestroy()】

bindservice()方法的具體使用可以參照下面這個部落格哦

android中bindservice方式使用的理解

service生命週期總結:

service是沒有介面,並且它是在後台執行的,所以免去了onpause、onstop、onresume這些方法。

3,broadcastreceiver的生命週期

通常我們的某個應用或系統本身在某些事件(電池電量不足、來電來簡訊)來臨時會廣播乙個intent出去,我們可以利用註冊乙個broadcast receiver來監聽到這些intent並獲取intent中的資料。

所以其實broadcasereceiver處理廣播的過程不能嚴格算是生命週期,而是乙個動作過程,在這個過程中它會呼叫onreceive方法,當這個方法執行到最後,broadcasereceiver的這個過程也就結束了。

4,thread生命週期

new建立乙個執行緒後,該執行緒處於新建狀態

當執行緒物件呼叫了start()後,該執行緒處於就緒狀態

處於就緒狀態的執行緒開始執行run方法時,該執行緒處於執行狀態

這個時候如果執行緒呼叫了sleep(),該執行緒就處於阻塞狀態

run()方法執行完成後,該執行緒處於死亡狀態

以上就是執行緒的生命週期,不過我問了幾個開發了幾年android的技術關於執行緒的生命週期,這邊我再補充一下:

若是在服務啟動的話,享有的最大生命週期與服務的生命週期相同

若是由主線程建立的話,則享受的最大生命週期與當前所在activity的相同生命週期相同

Iview Table元件中各種元件擴充套件

一 iview table 元件 多選框選中和禁選設定 table新增多選框 通過給columns資料設定一項,指定type selection 即可自動開啟多選功能。正確使用好以下事件,可以達到需要的效果 給 data 項設定特殊 key checked true可以預設選中當前項。給 data ...

Android 中的各種控制項

介紹 在 android 中使用各種控制項 view datepicker 日期選擇控制項 timepicker 時間選擇控制項 togglebutton 雙狀態按鈕控制項 edittext 可編輯文字控制項 progressbar 進度條控制項 seekbar 可拖動的進度條控制項 autocom...

android 中activity的生命週期

activity的生命週期 activity首次啟動會呼叫 oncreate onstart onresume 按back鍵呼叫 onpause onstop ondestory 按home鍵呼叫 onpause onstop 再次進入呼叫 onrestart onstart onresume 以下...