版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章Android生命周期本章學(xué)習(xí)目標(biāo):了解Android系統(tǒng)的四大基本組件了解Android系統(tǒng)的進(jìn)程優(yōu)先級(jí)的變化方式了解Activity的生命周期中各狀態(tài)的變化關(guān)系掌握Activity事件回調(diào)函數(shù)的作用和調(diào)用順序3.1
Android組件Android系統(tǒng)四大組件(調(diào)用的基本模塊)ActivityAndroid程序的呈現(xiàn)層,顯示可視化的用戶(hù)界面,并接收與用戶(hù)交互所產(chǎn)生的界面事件Android應(yīng)用程序可以包含一個(gè)或多個(gè)Activity,一般需要指定一個(gè)程序啟動(dòng)時(shí)顯示的ActivityServiceService一般用于沒(méi)有用戶(hù)界面,但需要長(zhǎng)時(shí)間在后臺(tái)運(yùn)行的應(yīng)用可公開(kāi)Service的程序接口,供其他進(jìn)程調(diào)用3.1
Android組件Android系統(tǒng)四大組件(調(diào)用的基本模塊)BroadcastReceiver用來(lái)接收廣播消息的組件,不包含任何用戶(hù)界面可以啟動(dòng)Activity或者Notification通知用戶(hù)接收到重要信息Notification能夠通過(guò)多種方法提示用戶(hù),包括閃動(dòng)背景燈、震動(dòng)設(shè)備、發(fā)出聲音或在狀態(tài)欄上放置一個(gè)圖標(biāo)ContentProvider是Android系統(tǒng)提供的一種標(biāo)準(zhǔn)的共享數(shù)據(jù)的機(jī)制,其他程序通過(guò)ContentProvider訪(fǎng)問(wèn)程序的私有數(shù)據(jù)Android系統(tǒng)內(nèi)部提供一些內(nèi)置的ContentProvider,能夠?yàn)閼?yīng)用程序提供重要的數(shù)據(jù)信息聯(lián)系人信息通話(huà)記錄ContentProvider的作用Android的系統(tǒng)組件回顧3.2程序生命周期Android系統(tǒng)的進(jìn)程優(yōu)先級(jí)從高到低分別為:前臺(tái)進(jìn)程可見(jiàn)進(jìn)程服務(wù)進(jìn)程后臺(tái)進(jìn)程空進(jìn)程3.2程序生命周期前臺(tái)進(jìn)程前臺(tái)進(jìn)程是Android系統(tǒng)中最重要的進(jìn)程進(jìn)程中的Activity正在與用戶(hù)進(jìn)行交互;Service被Activity調(diào)用,而且這個(gè)Activity正在與用戶(hù)進(jìn)行交互;Service正在執(zhí)行聲明周期中的回調(diào)函數(shù),如onCreate()、onStart()或onDestroy();進(jìn)程的BroadcastReceiver正在執(zhí)行onReceive()函數(shù);3.2程序生命周期可見(jiàn)進(jìn)程可見(jiàn)進(jìn)程指部分程序界面能夠被用戶(hù)看見(jiàn),卻不在前臺(tái)與用戶(hù)交互,不響應(yīng)界面事件的進(jìn)程如果一個(gè)進(jìn)程包含Service,且這個(gè)Service正在被用戶(hù)可見(jiàn)的Activity調(diào)用,此進(jìn)程同樣被視為可見(jiàn)進(jìn)程服務(wù)進(jìn)程包含已啟動(dòng)服務(wù)的進(jìn)程Android系統(tǒng)除非不能保證前臺(tái)進(jìn)程或可視進(jìn)程所必要的資源,否則不強(qiáng)行清除服務(wù)進(jìn)程3.2程序生命周期后臺(tái)進(jìn)程指不包含任何已經(jīng)啟動(dòng)的服務(wù),而且沒(méi)有任何用戶(hù)可見(jiàn)的Activity的進(jìn)程Android系統(tǒng)中一般存在數(shù)量較多的后臺(tái)進(jìn)程空進(jìn)程空進(jìn)程是不包含任何活躍組件的進(jìn)程3.2程序生命周期優(yōu)先級(jí)決定與變化規(guī)則進(jìn)程的優(yōu)先級(jí)取決于所有組件中的優(yōu)先級(jí)最高的部分進(jìn)程的優(yōu)先級(jí)會(huì)根據(jù)與其他進(jìn)程的依賴(lài)關(guān)系而變化3.3
Android組件組件生命周期所有Android組件都具有自己的生命周期,是從組件建立到組件銷(xiāo)毀的整個(gè)過(guò)程在生命周期中,組件會(huì)在可見(jiàn)、不可見(jiàn)、活動(dòng)、非活動(dòng)等狀態(tài)中不斷變化3.3
Activity生命周期Activity生命周期Activity生命周期指Activity從啟動(dòng)到銷(xiāo)毀的過(guò)程Activity表現(xiàn)為四種狀態(tài)活動(dòng)狀態(tài),Activity在用戶(hù)界面中處于最上層,完全能被用戶(hù)看到,能夠與用戶(hù)進(jìn)行交互暫停狀態(tài),Activity在界面上被部分遮擋,該Activity不再處于用戶(hù)界面的最上層,且不能夠與用戶(hù)進(jìn)行交互停止?fàn)顟B(tài),Activity在界面上完全不能被用戶(hù)看到,也就是說(shuō)這個(gè)Activity被其他Activity全部遮擋非活動(dòng)狀態(tài),不在以上三種狀態(tài)中的Activity則處于非活動(dòng)狀態(tài)3.3
Activity生命周期Activity的四種狀態(tài)的變換關(guān)系圖3.3
Activity生命周期Activity棧遵循“后進(jìn)先出”的規(guī)則3.3
Activity生命周期隨著Activity自身狀態(tài)的變化,Android系統(tǒng)會(huì)調(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ù)是否可終止說(shuō)明onCreate()否Activity啟動(dòng)后第一個(gè)被調(diào)用的函數(shù),常用來(lái)進(jìn)行Activity的初始化,例如創(chuàng)建View、綁定數(shù)據(jù)或恢復(fù)信息等。onStart()否當(dāng)Activity顯示在屏幕上時(shí),該函數(shù)被調(diào)用。onRestart()否當(dāng)Activity從停止?fàn)顟B(tài)進(jìn)入活動(dòng)狀態(tài)前,調(diào)用該函數(shù)。onResume()否當(dāng)Activity可以接受用戶(hù)輸入時(shí),該函數(shù)被調(diào)用。onPause()否當(dāng)Activity進(jìn)入暫停狀態(tài)時(shí),該函數(shù)被調(diào)用。主要用來(lái)保存持久數(shù)據(jù)、關(guān)閉動(dòng)畫(huà)、釋放CPU資源等。該函數(shù)中的代碼必須簡(jiǎn)短,因?yàn)榱硪粋€(gè)Activity必須等待該函數(shù)執(zhí)行完畢后才能顯示在界面上。onStop()是當(dāng)Activity不對(duì)用戶(hù)可見(jiàn)后,該函數(shù)被調(diào)用,Activity進(jìn)入停止?fàn)顟B(tài)。onDestroy()是在Activity被終止前,即進(jìn)入非活動(dòng)狀態(tài)前,該函數(shù)被調(diào)用。有兩種情況該函數(shù)會(huì)被調(diào)用:(1)當(dāng)程序主動(dòng)調(diào)用finish()函數(shù);(2)程序被Android系統(tǒng)終結(jié)。3.3
Activity生命周期onRestoreInstanceState()和onSaveInstanceState()不屬于生命周期的事件回調(diào)函數(shù),但可以用于保存和恢復(fù)Activity的界面臨時(shí)信息onSaveInstanceState()會(huì)將界面臨時(shí)信息保存在Bundle中,onCreate()和onRestoreInstanceState()都可以恢復(fù)這些保存的信息簡(jiǎn)化的辦法是使用onCreate()恢復(fù),但有些特殊的情況下還是需要使用onRestoreInstanceState()函數(shù)恢復(fù)必須在界面完全初始化完畢后才能進(jìn)行的操作或需要由子類(lèi)來(lái)確定是否采用缺省設(shè)置等函數(shù)說(shuō)明onSaveInstanceState()暫?;蛲V笰ctivity前調(diào)用該函數(shù),用以保存Activity的臨時(shí)狀態(tài)信息onRestoreInstanceState()恢復(fù)onSaveInstanceState()保存的Activity狀態(tài)信息。3.3
Activity生命周期Activity事件回調(diào)函數(shù)的調(diào)用順序Activity生命周期分類(lèi)Activity的生命周期可分為全生命周期、可視生命周期和活動(dòng)生命周期每種生命周期中包含不同的事件回調(diào)函數(shù)3.3
Activity生命周期全生命周期全生命周期是從Activity建立到銷(xiāo)毀的全部過(guò)程,始于onCreate(),結(jié)束于onDestroy()使用者通常在onCreate()中初始化Activity所能使用的全局資源和狀態(tài),并在onDestroy()中釋放這些資源在一些極端的情況下,Android系統(tǒng)會(huì)不調(diào)用onDestroy()函數(shù),而直接終止進(jìn)程3.3
Activity生命周期可視生命周期可視生命周期是Activity在界面上從可見(jiàn)到不可見(jiàn)的過(guò)程,開(kāi)始于onStart(),結(jié)束于onStop()3.3
Activity生命周期可視生命周期onStart()一般用來(lái)初始化或啟動(dòng)與更新界面相關(guān)的資源onStop()一般用來(lái)暫?;蛲V挂磺信c更新用戶(hù)界面相關(guān)的線(xiàn)程、計(jì)時(shí)器和服務(wù)onRestart()函數(shù)在onSart()前被調(diào)用,用來(lái)在Activity從不可見(jiàn)變?yōu)榭梢?jiàn)的過(guò)程中,進(jìn)行一些特定的處理過(guò)程onStart()和onStop()會(huì)被多次調(diào)用3.3
Activity生命周期活動(dòng)生命周期活動(dòng)生命周期是Activity在屏幕的最上層,并能夠與用戶(hù)交互的階段,開(kāi)始于onResume(),結(jié)束于onPause()在Activity的狀態(tài)變換過(guò)程中onResume()和onPause()經(jīng)常被調(diào)用,因此這兩個(gè)函數(shù)中應(yīng)使用更為簡(jiǎn)單、高效的代碼3.3
Activity生命周期onPause()和onSaveInstanceState()這兩個(gè)函數(shù)都可以用來(lái)保存界面的用戶(hù)輸入數(shù)據(jù)onPause()一般用于保存持久性數(shù)據(jù),并將數(shù)據(jù)保存在存儲(chǔ)設(shè)備上的文件系統(tǒng)或數(shù)據(jù)庫(kù)系統(tǒng)中的onSaveInstanceState()主要用來(lái)保存動(dòng)態(tài)的狀態(tài)信息,信息一般保存在Bundle中Bundle是能夠保存多種格式數(shù)據(jù)的對(duì)象,系統(tǒng)在調(diào)用onRestoreInstanceState()和onCreate()時(shí),會(huì)同樣利用Bundle將數(shù)據(jù)傳遞給函數(shù)3.3
Activity生命周期活動(dòng)生命周期下面以ActivityLifeCycle示例來(lái)進(jìn)行說(shuō)明,ActivityLifeCycle示例的運(yùn)行界面3.3
Activity生命周期ActivityLifeCycleActivity.java文件的全部代碼packageedu.hrbeu.ActivityLifeCycle;
importandroid.app.Activity;importandroid.os.Bundle;importandroid.util.Log;
publicclassActivityLifeCycleextendsActivity{
privatestaticStringTAG="LIFTCYCLE";
@Override//完全生命周期開(kāi)始時(shí)被調(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//可視生命周期開(kāi)始時(shí)被調(diào)用,對(duì)用戶(hù)界面進(jìn)行必要的更改
publicvoidonStart(){
super.onStart();
Log.i(TAG,"(2)onStart()");}
@Override//在onStart()后被調(diào)用,用于恢復(fù)onSaveInstanceState()保存的用戶(hù)界面信息
publicvoidonRestoreInstanceState(Bundle
savedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
Log.i(TAG,"(3)onRestoreInstanceState()");}
3.3
Activity生命周期@Override//在活動(dòng)生命周期開(kāi)始時(shí)被調(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//在重新進(jìn)入可視生命周期前被調(diào)用,載入界面所需要的更改信息
publicvoidonRestart(){
super.onRestart();
Log.i(TAG,"(6)onRestart()");}
@Override//在活動(dòng)生命周期結(jié)束時(shí)被調(diào)用,用來(lái)保存持久的數(shù)據(jù)或釋放占用的資源
publicvoidonPause(){
super.onPause();
Log.i(TAG,“(7)onPause()”);、3.3
Activity生命周期ActivityLifeCycle.java文件的代碼@Override//在可視生命周期結(jié)束時(shí)被調(diào)用,一般用來(lái)保存持久的數(shù)據(jù)或釋放占用的資源publicvoidonStop(){
super.onStop();
Log.i(TAG,"(8)onStop()");}
@Override//在完全生命周期結(jié)束時(shí)被調(diào)用,釋放資源,包括線(xiàn)程、數(shù)據(jù)連接等
publicvoidonDestroy(){
super.onDestroy();
Log.i(TAG,"(9)onDestroy()");}}Log類(lèi)簡(jiǎn)單的使用Log.v(Stringtag,Stringmsg);//VERBOSELog.d(Stringtag,Stringmsg);//DEBUGLog.i(Stringtag,Stringmsg);//INFOLog.w(Stringtag,Stringmsg);//WARNLog.e(Stringtag,Stringmsg);//ERROR3.3
Activity生命周期上面的程序主要通過(guò)在生命周期函數(shù)中添加“日志點(diǎn)”的方法進(jìn)行調(diào)試,程序的運(yùn)行結(jié)果將會(huì)顯示在LogCa
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年學(xué)前教育師資隊(duì)伍教師培訓(xùn)資源整合與共享策略報(bào)告
- 南京藝考考試題目及答案
- 原木窗簾知識(shí)培訓(xùn)內(nèi)容課件
- 2025年新能源汽車(chē)股份并購(gòu)及員工股權(quán)激勵(lì)協(xié)議
- 2025年多式聯(lián)運(yùn)信息平臺(tái)協(xié)同物流與智慧物流企業(yè)戰(zhàn)略目標(biāo)設(shè)定與實(shí)施報(bào)告
- 2025年新型小區(qū)智能停車(chē)系統(tǒng)設(shè)備供應(yīng)與施工合同
- 2025年農(nóng)業(yè)智能化專(zhuān)利授權(quán)及普及應(yīng)用服務(wù)合同
- 工業(yè)互聯(lián)網(wǎng)平臺(tái)可信執(zhí)行環(huán)境(TEE)2025年在智能建筑節(jié)能中的應(yīng)用探索報(bào)告
- 2025年度定制化車(chē)輛租賃與全面安全管理體系合同
- 2025醫(yī)療設(shè)備采購(gòu)協(xié)議實(shí)施指導(dǎo)書(shū):經(jīng)理職責(zé)與風(fēng)險(xiǎn)防控合同
- 助產(chǎn)士門(mén)診臨床實(shí)踐專(zhuān)家共識(shí)的構(gòu)建
- 2022工程設(shè)計(jì)資質(zhì)標(biāo)準(zhǔn)
- 人員密集場(chǎng)所火災(zāi)撲救
- 2023混凝土板樁支護(hù)技術(shù)規(guī)程
- 高中物理-科學(xué)探究:感應(yīng)電流的方向教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 公路工程施工招標(biāo)文件
- 電力市場(chǎng)交易體系規(guī)則培訓(xùn)PPT
- 小學(xué)六年級(jí)下冊(cè)數(shù)學(xué)校本教材
- 三非承諾書(shū)(共5篇)
- WHO兒童身高體重參考值及評(píng)價(jià)標(biāo)準(zhǔn)
- GB/T 4909.7-2009裸電線(xiàn)試驗(yàn)方法第7部分:卷繞試驗(yàn)
評(píng)論
0/150
提交評(píng)論