




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第3章Android生命周期本章學習目標:了解Android系統的四大基本組件了解Android系統的進程優先級的變化方式了解Activity的生命周期中各狀態的變化關系掌握Activity事件回調函數的作用和調用順序3.1
Android組件Android系統四大組件(調用的基本模塊)ActivityAndroid程序的呈現層,顯示可視化的用戶界面,并接收與用戶交互所產生的界面事件Android應用程序可以包含一個或多個Activity,一般需要指定一個程序啟動時顯示的ActivityServiceService一般用于沒有用戶界面,但需要長時間在后臺運行的應用可公開Service的程序接口,供其他進程調用3.1
Android組件Android系統四大組件(調用的基本模塊)BroadcastReceiver用來接收廣播消息的組件,不包含任何用戶界面可以啟動Activity或者Notification通知用戶接收到重要信息Notification能夠通過多種方法提示用戶,包括閃動背景燈、震動設備、發出聲音或在狀態欄上放置一個圖標ContentProvider是Android系統提供的一種標準的共享數據的機制,其他程序通過ContentProvider訪問程序的私有數據Android系統內部提供一些內置的ContentProvider,能夠為應用程序提供重要的數據信息聯系人信息通話記錄ContentProvider的作用Android的系統組件回顧3.2程序生命周期Android系統的進程優先級從高到低分別為:前臺進程可見進程服務進程后臺進程空進程3.2程序生命周期前臺進程前臺進程是Android系統中最重要的進程進程中的Activity正在與用戶進行交互;Service被Activity調用,而且這個Activity正在與用戶進行交互;Service正在執行聲明周期中的回調函數,如onCreate()、onStart()或onDestroy();進程的BroadcastReceiver正在執行onReceive()函數;3.2程序生命周期可見進程可見進程指部分程序界面能夠被用戶看見,卻不在前臺與用戶交互,不響應界面事件的進程如果一個進程包含Service,且這個Service正在被用戶可見的Activity調用,此進程同樣被視為可見進程服務進程包含已啟動服務的進程Android系統除非不能保證前臺進程或可視進程所必要的資源,否則不強行清除服務進程3.2程序生命周期后臺進程指不包含任何已經啟動的服務,而且沒有任何用戶可見的Activity的進程Android系統中一般存在數量較多的后臺進程空進程空進程是不包含任何活躍組件的進程3.2程序生命周期優先級決定與變化規則進程的優先級取決于所有組件中的優先級最高的部分進程的優先級會根據與其他進程的依賴關系而變化3.3
Android組件組件生命周期所有Android組件都具有自己的生命周期,是從組件建立到組件銷毀的整個過程在生命周期中,組件會在可見、不可見、活動、非活動等狀態中不斷變化3.3
Activity生命周期Activity生命周期Activity生命周期指Activity從啟動到銷毀的過程Activity表現為四種狀態活動狀態,Activity在用戶界面中處于最上層,完全能被用戶看到,能夠與用戶進行交互暫停狀態,Activity在界面上被部分遮擋,該Activity不再處于用戶界面的最上層,且不能夠與用戶進行交互停止狀態,Activity在界面上完全不能被用戶看到,也就是說這個Activity被其他Activity全部遮擋非活動狀態,不在以上三種狀態中的Activity則處于非活動狀態3.3
Activity生命周期Activity的四種狀態的變換關系圖3.3
Activity生命周期Activity棧遵循“后進先出”的規則3.3
Activity生命周期隨著Activity自身狀態的變化,Android系統會調用不同的事件回調函數Activity的主要事件回調函數
publicclassMyActivityextendsActivity{protectedvoidonCreate(Bundle
savedInstanceState);protectedvoidonStart();protectedvoidonRestart();protectedvoidonResume();protectedvoidonPause();protectedvoidonStop();protectedvoidonDestroy();}3.3
Activity生命周期函數Activity生命周期的事件回調函數函數是否可終止說明onCreate()否Activity啟動后第一個被調用的函數,常用來進行Activity的初始化,例如創建View、綁定數據或恢復信息等。onStart()否當Activity顯示在屏幕上時,該函數被調用。onRestart()否當Activity從停止狀態進入活動狀態前,調用該函數。onResume()否當Activity可以接受用戶輸入時,該函數被調用。onPause()否當Activity進入暫停狀態時,該函數被調用。主要用來保存持久數據、關閉動畫、釋放CPU資源等。該函數中的代碼必須簡短,因為另一個Activity必須等待該函數執行完畢后才能顯示在界面上。onStop()是當Activity不對用戶可見后,該函數被調用,Activity進入停止狀態。onDestroy()是在Activity被終止前,即進入非活動狀態前,該函數被調用。有兩種情況該函數會被調用:(1)當程序主動調用finish()函數;(2)程序被Android系統終結。3.3
Activity生命周期onRestoreInstanceState()和onSaveInstanceState()不屬于生命周期的事件回調函數,但可以用于保存和恢復Activity的界面臨時信息onSaveInstanceState()會將界面臨時信息保存在Bundle中,onCreate()和onRestoreInstanceState()都可以恢復這些保存的信息簡化的辦法是使用onCreate()恢復,但有些特殊的情況下還是需要使用onRestoreInstanceState()函數恢復必須在界面完全初始化完畢后才能進行的操作或需要由子類來確定是否采用缺省設置等函數說明onSaveInstanceState()暫停或停止Activity前調用該函數,用以保存Activity的臨時狀態信息onRestoreInstanceState()恢復onSaveInstanceState()保存的Activity狀態信息。3.3
Activity生命周期Activity事件回調函數的調用順序Activity生命周期分類Activity的生命周期可分為全生命周期、可視生命周期和活動生命周期每種生命周期中包含不同的事件回調函數3.3
Activity生命周期全生命周期全生命周期是從Activity建立到銷毀的全部過程,始于onCreate(),結束于onDestroy()使用者通常在onCreate()中初始化Activity所能使用的全局資源和狀態,并在onDestroy()中釋放這些資源在一些極端的情況下,Android系統會不調用onDestroy()函數,而直接終止進程3.3
Activity生命周期可視生命周期可視生命周期是Activity在界面上從可見到不可見的過程,開始于onStart(),結束于onStop()3.3
Activity生命周期可視生命周期onStart()一般用來初始化或啟動與更新界面相關的資源onStop()一般用來暫停或停止一切與更新用戶界面相關的線程、計時器和服務onRestart()函數在onSart()前被調用,用來在Activity從不可見變為可見的過程中,進行一些特定的處理過程onStart()和onStop()會被多次調用3.3
Activity生命周期活動生命周期活動生命周期是Activity在屏幕的最上層,并能夠與用戶交互的階段,開始于onResume(),結束于onPause()在Activity的狀態變換過程中onResume()和onPause()經常被調用,因此這兩個函數中應使用更為簡單、高效的代碼3.3
Activity生命周期onPause()和onSaveInstanceState()這兩個函數都可以用來保存界面的用戶輸入數據onPause()一般用于保存持久性數據,并將數據保存在存儲設備上的文件系統或數據庫系統中的onSaveInstanceState()主要用來保存動態的狀態信息,信息一般保存在Bundle中Bundle是能夠保存多種格式數據的對象,系統在調用onRestoreInstanceState()和onCreate()時,會同樣利用Bundle將數據傳遞給函數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//完全生命周期開始時被調用,初始化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//可視生命周期開始時被調用,對用戶界面進行必要的更改
publicvoidonStart(){
super.onStart();
Log.i(TAG,"(2)onStart()");}
@Override//在onStart()后被調用,用于恢復onSaveInstanceState()保存的用戶界面信息
publicvoidonRestoreInstanceState(Bundle
savedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
Log.i(TAG,"(3)onRestoreInstanceState()");}
3.3
Activity生命周期@Override//在活動生命周期開始時被調用,恢復被onPause()停止的用于界面更新的資源
publicvoidonResume(){
super.onResume();
Log.i(TAG,"(4)onResume()");}33.@Override//在onResume()后被調用,保存界面信息
publicvoidonSaveInstanceState(Bundle
savedInstanceState){super.onSaveInstanceState(savedInstanceState);
Log.i(TAG,"(5)onSaveInstanceState()");}
}51.@Override//在重新進入可視生命周期前被調用,載入界面所需要的更改信息
publicvoidonRestart(){
super.onRestart();
Log.i(TAG,"(6)onRestart()");}
@Override//在活動生命周期結束時被調用,用來保存持久的數據或釋放占用的資源
publicvoidonPause(){
super.onPause();
Log.i(TAG,“(7)onPause()”);、3.3
Activity生命周期ActivityLifeCycle.java文件的代碼@Override//在可視生命周期結束時被調用,一般用來保存持久的數據或釋放占用的資源publicvoidonStop(){
super.onStop();
Log.i(TAG,"(8)onStop()");}
@Override//在完全生命周期結束時被調用,釋放資源,包括線程、數據連接等
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生命周期上面的程序主要通過在生命周期函數中添加“日志點”的方法進行調試,程序的運行結果將會顯示在LogCa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學生書香家庭課件
- 家具訂購合同協議模板
- 店面轉租合同協議
- 母豬抗病能力提升方法試題及答案
- 2024年文化產業管理知識綜合考察試題及答案
- 如何優化專利申請中的流程管理與效率提升試題及答案
- 2024年專利授權時限試題及答案分析
- 光電工程師證書考試總結試題及答案
- 2024年光電工程師考試中的形勢與任務分析試題及答案
- 醫療機構藥劑管理系統綜述試題及答案
- 短視頻編輯與制作全套教學課件
- 小學語文教學技能PPT完整全套教學課件
- 美國憲法全文(中、英文版)
- 初中歷史課件:中國古代科技發展史
- 安全閥管理臺賬
- 腫瘤科運用PDCA循環提高疼痛評估的規范率品管圈成果匯報
- 經歷是流經裙邊的水
- 胎兒心臟超聲檢查課件詳解
- 2023年06月天津市便民專線服務中心招考聘用合同制員工筆試題庫含答案解析
- 2023年高速公路監理工程師質量目標責任書
- 抖音政務號運營建設方案版
評論
0/150
提交評論