第3章Android生命周期_第1頁
第3章Android生命周期_第2頁
第3章Android生命周期_第3頁
第3章Android生命周期_第4頁
第3章Android生命周期_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第3章Android生命周期本章學(xué)習(xí)目標:了解Android系統(tǒng)的四大基本組件了解Android系統(tǒng)的進程優(yōu)先級的變化方式了解Activity的生命周期中各狀態(tài)的變化關(guān)系掌握Activity事件回調(diào)函數(shù)的作用和調(diào)用順序3.1

Android組件Android系統(tǒng)四大組件(調(diào)用的基本模塊)ActivityAndroid程序的呈現(xiàn)層,顯示可視化的用戶界面,并接收與用戶交互所產(chǎn)生的界面事件Android應(yīng)用程序可以包含一個或多個Activity,一般需要指定一個程序啟動時顯示的ActivityServiceService一般用于沒有用戶界面,但需要長時間在后臺運行的應(yīng)用可公開Service的程序接口,供其他進程調(diào)用3.1

Android組件Android系統(tǒng)四大組件(調(diào)用的基本模塊)BroadcastReceiver用來接收廣播消息的組件,不包含任何用戶界面可以啟動Activity或者Notification通知用戶接收到重要信息Notification能夠通過多種方法提示用戶,包括閃動背景燈、震動設(shè)備、發(fā)出聲音或在狀態(tài)欄上放置一個圖標ContentProvider是Android系統(tǒng)提供的一種標準的共享數(shù)據(jù)的機制,其他程序通過ContentProvider訪問程序的私有數(shù)據(jù)Android系統(tǒng)內(nèi)部提供一些內(nèi)置的ContentProvider,能夠為應(yīng)用程序提供重要的數(shù)據(jù)信息聯(lián)系人信息通話記錄ContentProvider的作用Android的系統(tǒng)組件回顧3.2程序生命周期Android系統(tǒng)的進程優(yōu)先級從高到低分別為:前臺進程可見進程服務(wù)進程后臺進程空進程3.2程序生命周期前臺進程前臺進程是Android系統(tǒng)中最重要的進程進程中的Activity正在與用戶進行交互;Service被Activity調(diào)用,而且這個Activity正在與用戶進行交互;Service正在執(zhí)行聲明周期中的回調(diào)函數(shù),如onCreate()、onStart()或onDestroy();進程的BroadcastReceiver正在執(zhí)行onReceive()函數(shù);3.2程序生命周期可見進程可見進程指部分程序界面能夠被用戶看見,卻不在前臺與用戶交互,不響應(yīng)界面事件的進程如果一個進程包含Service,且這個Service正在被用戶可見的Activity調(diào)用,此進程同樣被視為可見進程服務(wù)進程包含已啟動服務(wù)的進程Android系統(tǒng)除非不能保證前臺進程或可視進程所必要的資源,否則不強行清除服務(wù)進程3.2程序生命周期后臺進程指不包含任何已經(jīng)啟動的服務(wù),而且沒有任何用戶可見的Activity的進程Android系統(tǒng)中一般存在數(shù)量較多的后臺進程空進程空進程是不包含任何活躍組件的進程3.2程序生命周期優(yōu)先級決定與變化規(guī)則進程的優(yōu)先級取決于所有組件中的優(yōu)先級最高的部分進程的優(yōu)先級會根據(jù)與其他進程的依賴關(guān)系而變化3.3

Android組件組件生命周期所有Android組件都具有自己的生命周期,是從組件建立到組件銷毀的整個過程在生命周期中,組件會在可見、不可見、活動、非活動等狀態(tài)中不斷變化3.3

Activity生命周期Activity生命周期Activity生命周期指Activity從啟動到銷毀的過程Activity表現(xiàn)為四種狀態(tài)活動狀態(tài),Activity在用戶界面中處于最上層,完全能被用戶看到,能夠與用戶進行交互暫停狀態(tài),Activity在界面上被部分遮擋,該Activity不再處于用戶界面的最上層,且不能夠與用戶進行交互停止狀態(tài),Activity在界面上完全不能被用戶看到,也就是說這個Activity被其他Activity全部遮擋非活動狀態(tài),不在以上三種狀態(tài)中的Activity則處于非活動狀態(tài)3.3

Activity生命周期Activity的四種狀態(tài)的變換關(guān)系圖3.3

Activity生命周期Activity棧遵循“后進先出”的規(guī)則3.3

Activity生命周期隨著Activity自身狀態(tài)的變化,Android系統(tǒng)會調(diào)用不同的事件回調(diào)函數(shù)Activity的主要事件回調(diào)函數(shù)

publicclassMyActivityextendsActivity{protectedvoidonCreate(Bundle

savedInstanceState);protectedvoidonStart();protectedvoidonRestart();protectedvoidonResume();protectedvoidonPause();protectedvoidonStop();protectedvoidonDestroy();}3.3

Activity生命周期函數(shù)Activity生命周期的事件回調(diào)函數(shù)函數(shù)是否可終止說明onCreate()否Activity啟動后第一個被調(diào)用的函數(shù),常用來進行Activity的初始化,例如創(chuàng)建View、綁定數(shù)據(jù)或恢復(fù)信息等。onStart()否當Activity顯示在屏幕上時,該函數(shù)被調(diào)用。onRestart()否當Activity從停止狀態(tài)進入活動狀態(tài)前,調(diào)用該函數(shù)。onResume()否當Activity可以接受用戶輸入時,該函數(shù)被調(diào)用。onPause()否當Activity進入暫停狀態(tài)時,該函數(shù)被調(diào)用。主要用來保存持久數(shù)據(jù)、關(guān)閉動畫、釋放CPU資源等。該函數(shù)中的代碼必須簡短,因為另一個Activity必須等待該函數(shù)執(zhí)行完畢后才能顯示在界面上。onStop()是當Activity不對用戶可見后,該函數(shù)被調(diào)用,Activity進入停止狀態(tài)。onDestroy()是在Activity被終止前,即進入非活動狀態(tài)前,該函數(shù)被調(diào)用。有兩種情況該函數(shù)會被調(diào)用:(1)當程序主動調(diào)用finish()函數(shù);(2)程序被Android系統(tǒng)終結(jié)。3.3

Activity生命周期onRestoreInstanceState()和onSaveInstanceState()不屬于生命周期的事件回調(diào)函數(shù),但可以用于保存和恢復(fù)Activity的界面臨時信息onSaveInstanceState()會將界面臨時信息保存在Bundle中,onCreate()和onRestoreInstanceState()都可以恢復(fù)這些保存的信息簡化的辦法是使用onCreate()恢復(fù),但有些特殊的情況下還是需要使用onRestoreInstanceState()函數(shù)恢復(fù)必須在界面完全初始化完畢后才能進行的操作或需要由子類來確定是否采用缺省設(shè)置等函數(shù)說明onSaveInstanceState()暫?;蛲V笰ctivity前調(diào)用該函數(shù),用以保存Activity的臨時狀態(tài)信息onRestoreInstanceState()恢復(fù)onSaveInstanceState()保存的Activity狀態(tài)信息。3.3

Activity生命周期Activity事件回調(diào)函數(shù)的調(diào)用順序Activity生命周期分類Activity的生命周期可分為全生命周期、可視生命周期和活動生命周期每種生命周期中包含不同的事件回調(diào)函數(shù)3.3

Activity生命周期全生命周期全生命周期是從Activity建立到銷毀的全部過程,始于onCreate(),結(jié)束于onDestroy()使用者通常在onCreate()中初始化Activity所能使用的全局資源和狀態(tài),并在onDestroy()中釋放這些資源在一些極端的情況下,Android系統(tǒng)會不調(diào)用onDestroy()函數(shù),而直接終止進程3.3

Activity生命周期可視生命周期可視生命周期是Activity在界面上從可見到不可見的過程,開始于onStart(),結(jié)束于onStop()3.3

Activity生命周期可視生命周期onStart()一般用來初始化或啟動與更新界面相關(guān)的資源onStop()一般用來暫停或停止一切與更新用戶界面相關(guān)的線程、計時器和服務(wù)onRestart()函數(shù)在onSart()前被調(diào)用,用來在Activity從不可見變?yōu)榭梢姷倪^程中,進行一些特定的處理過程onStart()和onStop()會被多次調(diào)用3.3

Activity生命周期活動生命周期活動生命周期是Activity在屏幕的最上層,并能夠與用戶交互的階段,開始于onResume(),結(jié)束于onPause()在Activity的狀態(tài)變換過程中onResume()和onPause()經(jīng)常被調(diào)用,因此這兩個函數(shù)中應(yīng)使用更為簡單、高效的代碼3.3

Activity生命周期onPause()和onSaveInstanceState()這兩個函數(shù)都可以用來保存界面的用戶輸入數(shù)據(jù)onPause()一般用于保存持久性數(shù)據(jù),并將數(shù)據(jù)保存在存儲設(shè)備上的文件系統(tǒng)或數(shù)據(jù)庫系統(tǒng)中的onSaveInstanceState()主要用來保存動態(tài)的狀態(tài)信息,信息一般保存在Bundle中Bundle是能夠保存多種格式數(shù)據(jù)的對象,系統(tǒng)在調(diào)用onRestoreInstanceState()和onCreate()時,會同樣利用Bundle將數(shù)據(jù)傳遞給函數(shù)3.3

Activity生命周期活動生命周期下面以ActivityLifeCycle示例來進行說明,ActivityLifeCycle示例的運行界面3.3

Activity生命周期ActivityLifeCycleActivity.java文件的全部代碼packageedu.hrbeu.ActivityLifeCycle;

importandroid.app.Activity;importandroid.os.Bundle;importandroid.util.Log;

publicclassActivityLifeCycleextendsActivity{

privatestaticStringTAG="LIFTCYCLE";

@Override//完全生命周期開始時被調(diào)用,初始化Activity

publicvoidonCreate(Bundle

savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Log.i(TAG,"1.oncreate()");

Buttonbut=(Button)findViewById(R.id.btn_finish);

but.setOnClickListener(new

View.OnClickListener(){@overridepublicvoid

onClick(Viewview){finish();}

});}3.3

Activity生命周期@Override//可視生命周期開始時被調(diào)用,對用戶界面進行必要的更改

publicvoidonStart(){

super.onStart();

Log.i(TAG,"(2)onStart()");}

@Override//在onStart()后被調(diào)用,用于恢復(fù)onSaveInstanceState()保存的用戶界面信息

publicvoidonRestoreInstanceState(Bundle

savedInstanceState){

super.onRestoreInstanceState(savedInstanceState);

Log.i(TAG,"(3)onRestoreInstanceState()");}

3.3

Activity生命周期@Override//在活動生命周期開始時被調(diào)用,恢復(fù)被onPause()停止的用于界面更新的資源

publicvoidonResume(){

super.onResume();

Log.i(TAG,"(4)onResume()");}33.@Override//在onResume()后被調(diào)用,保存界面信息

publicvoidonSaveInstanceState(Bundle

savedInstanceState){super.onSaveInstanceState(savedInstanceState);

Log.i(TAG,"(5)onSaveInstanceState()");}

}51.@Override//在重新進入可視生命周期前被調(diào)用,載入界面所需要的更改信息

publicvoidonRestart(){

super.onRestart();

Log.i(TAG,"(6)onRestart()");}

@Override//在活動生命周期結(jié)束時被調(diào)用,用來保存持久的數(shù)據(jù)或釋放占用的資源

publicvoidonPause(){

super.onPause();

Log.i(TAG,“(7)onPause()”);、3.3

Activity生命周期ActivityLifeCycle.java文件的代碼@Override//在可視生命周期結(jié)束時被調(diào)用,一般用來保存持久的數(shù)據(jù)或釋放占用的資源publicvoidonStop(){

super.onStop();

Log.i(TAG,"(8)onStop()");}

@Override//在完全生命周期結(jié)束時被調(diào)用,釋放資源,包括線程、數(shù)據(jù)連接等

publicvoidonDestroy(){

super.onDestroy();

Log.i(TAG,"(9)onDestroy()");}}Log類簡單的使用Log.v(Stringtag,Stringmsg);//VERBOSELog.d(Stringtag,Stringmsg);//DEBUGLog.i(Stringtag,Stringmsg);//INFOLog.w(Stringtag,Stringmsg);//WARNLog.e(Stringtag,Stringmsg);//ERROR3.3

Activity生命周期上面的程序主要通過在生命周期函數(shù)中添加“日志點”的方法進行調(diào)試,程序的運行結(jié)果將會顯示在LogCa

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論