標籤:
1、Activity的生命週期:
Activity大致會經過如下4個狀態:
活動狀態:當前Activity位於前台,使用者可見,可以獲得焦點。
暫停狀態:其他Activity位於前台,該Activity依然可見,只是不能獲得焦點。
停止狀態:該Activity不可見,失去焦點。
銷毀狀態:該Activity結束,或Activity所在的Dalvik進程被結束。
在Activity的生命週期中,如下方法會被系統回調:
onCreate(Bundle savedStatus): 建立Activity時被回調。該方法只會被調用一次。
onStart(): 啟動Activity時被回調,。
onRestart(): 重新啟動Activity時被回調。
onResume(): 恢複Activity時被回調,onStart()方法後一定會回調 onResume() 方法。
onPause(): 暫停Activity時被回調,也就是系統準備啟動或恢複另一個活動時調用。
onStop(): 停止Activity時被回調。
onDestroy(): 銷毀Activity時被調用。該方法只會被調用一次。
開發Activity時可根據需要選擇性地覆蓋指定方法:
覆蓋onCreate(Bundle savedStatus)方法:該方法用於對該Activity執行初始化,如載入布局、綁定事件...
覆蓋onPause()方法:可以儲存進行狀態,儲存一些關鍵資料
覆蓋onResume()方法:恢複儲存的狀態
2、關於Service:
開發人員開發Service的步驟與開發Activity的步驟很像,開發Service組件需要先開發一個Service的子類,然後在AndroidManifest.xml檔案中配置該Service,配置時可通過<intent-filter.../>元素指定它可被哪些Intent啟動。
Service與Activity還有一點相似之處,它們都是從Context派生出來的,因此它們都可調用Context裡定義的如getResources()、getContentResolver()等方法。
Android系統本身提供了大量的Service組件,開發人員可通過這些系統Service來操作Android系統本身。
Service中也定義了系列生命週期方法:
IBinder onBind(Intent intent): 該方法是Service子類必須實現的方法。該方法返回一個IBinder對象,應用程式可通過該對象與Service組件通訊。
void onCreate(): 當該Service第一次被建立後將立即回調該方法。
void onDestroy(): 當該Service被關閉之前將會回調該方法。
void onStartCommand(Intent intent, int flags, int startId): 該方法的早期版本是void onStart(Intent intent, int startId), 每次用戶端調用startService(Intent)方法啟動該Service時都會回調該方法。
boolean onUnbind(Intent intent): 當該Service上綁定的所有用戶端都中斷連線時將會回調該方法。
調用Context裡定義的startService()、stopService()方法即可啟動、關閉Service。
每當Service被建立時會回調onCreate方法,每次Service被啟動時都會回調onStart方法——多次啟動一個已有的Service組件將不會再回調onCreate方法,但每次啟動時都會回調onStartCommand()方法。
如果希望Service組件做某些事情,那麼只要在 onCreate() 或 onStartCommand() 方法中定義相關業務代碼即可。
Android系統中運行Service有如下兩種方式:
通過Context的 startService() 方法:通過該方法啟用Service,訪問者與Service之間沒有關聯,即使訪問者退出了,Service仍然運行,也無法進行通訊、資料交換。
通過Context的 bindService() 方法:使用該方法啟用Service,訪問者與Service綁定在了一起,訪問者一旦退出,Service也就終止,使用unbindService()方法關閉Service,可以進行方法調用或資料交換。
bindService(Intent service, ServiceConnection conn, int flags)的三個參數的解釋如下:
service:該參數通過Intent指定要啟動的Service
conn:該參數是一個ServiceConnection對象,該對象用於監聽訪問者與Service之間的串連情況。當訪問者與Service之間串連成功時將回調該ServiceConnection對象的 onServiceConnected(ComponentName name, IBinder service)方法,onBind(Intent intent)方法所返回的IBinder對象將會傳給service參數,這樣訪問者就可通過該IBindler與被綁定Service進行的通訊;當Service所在的宿主進程由於異常中止或由於其他原因終止,導致該Service與訪問者之間中斷連線時回調該ServiceConnection對象的onServiceDisconnected(ComponentName name)方法(當調用者主動通過unBindService()方法斷開與Service的串連時,ServiceConnection對象的onServiceDisconnected(ComponentName name)方法並不會被調用)
flags:指定綁定時是否自動建立Service(如果Service還未建立)。該參數可指定為0(不自動建立)或BIND_AUTO_CREATE(自動建立)
Andriod應用開發知識搜集4