在Android應(yīng)用組件中,所有組件都是具有生命周期的,當(dāng)組件被創(chuàng)建時(shí),開始其生命周期,當(dāng)組件被銷毀時(shí),結(jié)束其生命周期。本文將著重介紹Activity、服務(wù)、廣播接收器的生命周期。
1.Activity生命周期
在系統(tǒng)中,Activity由Activity棧即Tasks來管理,Activity在其整個(gè)生命周期中,有4個(gè)狀態(tài):運(yùn)行(running)、暫停(paused)、停止(stopped)、銷毀(Destroyed)。當(dāng)一個(gè)Activity被啟動(dòng)時(shí),該Activity被放置在Tasks的頂部,其狀態(tài)處于“running”狀態(tài)。
當(dāng)一個(gè)Activity被置于前臺(tái)時(shí),該Activity處于“running”狀態(tài)。
當(dāng)一個(gè)Activity失去焦點(diǎn)但仍然可視時(shí),該Activity處于“paused”狀態(tài)。在“paused”狀態(tài)下,如果系統(tǒng)可用內(nèi)存非常低,該Activity則可能被銷毀。
當(dāng)一個(gè)Activity完全不可視時(shí),該Activity處于“stopped”狀態(tài)。當(dāng)系統(tǒng)需要更多內(nèi)存時(shí),該Activity可能被銷毀。
當(dāng)一個(gè)Activity因?yàn)槟撤N原因被銷毀時(shí),該Activity將處于“Destroyed”狀態(tài),圖1-1顯示了Activity的狀態(tài)遷移過程。

圖1-1 Activity生命周期
2.服務(wù)生命周期
Service服務(wù)通常作為后臺(tái)進(jìn)程運(yùn)行,通過Context.startService()方法可以啟動(dòng)服務(wù),如果需要銷毀一個(gè)服務(wù),則可以調(diào)用Context.stopService()、Service.stopSelf()、Service.stopSelfResult()等方法。
當(dāng)客戶端需要和服務(wù)進(jìn)行綁定來利用服務(wù)時(shí),需要調(diào)用Context.bindService()方法,結(jié)束綁定需要調(diào)用Context.unbindService()方法。圖1-2顯示了服務(wù)的狀態(tài)遷移過程。

圖1-2 服務(wù)生命周期
3.廣播接收器生命周期
廣播接收器(Broadcast Receivers)必須定義的一個(gè)回調(diào)方法為:
void onReceive(Context curContext, Intent broadcastMsg)
當(dāng)一個(gè)廣播消息到達(dá)時(shí),Android會(huì)調(diào)用BroadcastReceiver ::onReceive()方法來處理消息,在處理過程中,廣播接收器處于激活狀態(tài),當(dāng)處理結(jié)束時(shí),廣播接收器處于去活狀態(tài)。
注冊(cè)一個(gè)廣播接收器的方法為Context::registerReceiver(BroadcastReceiver, IntentFilter)。