




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Android程序開發應用實例
第五講AndoridActivity組件
12內容概要
Activity生命周期Activity棧管理機制
解析Activity的實現Activity的消息傳遞Activity應用總結23本節內容什么是AndroidActivity生命周期
3Activity生命周期特征一個完整Activity的生命周期包括激活狀態、運行狀態、暫停狀態、停止狀態和終止狀態。這些狀態的特征為:激活狀態:Activity的初始狀態,所有的Activity必須經歷這個狀態運行狀態:這時的Activity運行在屏幕的前臺暫停狀態:這時Activity失去了焦點但是仍然對用戶可見。停止狀態:這時Activity對用戶不可見,所以其窗口會被其他Activity覆蓋。終止狀態:這時Activity將會被系統清理出內存4Activity生命周期狀態轉換Activity的生命周期狀態轉換如以下圖所示:5Activity生命周期劃分Activity的生命周期可以根據不同的標準分為:完整生命周期onCreate()
onDestroy()可見生命周期onStart()
onStop()前臺生命周期onResume()
onPause()67本節內容什么是AndroidActivity棧管理機制
7Android管理Activity
大多數的應用程序根據功能的需要都是由多個屏幕顯示組成,因此大局部的Android應用中也就必須包含多個Activity類。Android系統使用棧來管理Activity。棧是一種先進后出的數據結構,處于頂端的元素總是被先處理。當一個新的Activity啟動的時候,它首先會被放置在Activity棧頂部并成為運行狀態的Activity只有當這個新的Activity退出以后,之前Activity才能重新回到前臺界面。8Activity棧管理過程〔續〕當前有Activity_A、Activity_B和Activity_C三個Activity。Activity_A是當前響應用戶的操作的Activity,因此處于運行狀態的Activity_A被放置于棧頂,而Activity_B和Activity_C處于暫停狀態。9Activity棧管理過程〔續〕當Activity_A對應的窗口被關閉時,Activity_B由暫停狀態轉成運行狀態,這時處于運行狀態的Activity_B被置于棧頂。10Activity棧管理過程當接著當Activity_B對應的窗口被關閉時,Activity_C由暫停狀態轉成運行狀態,這時處于運行狀態的Activity_C被置于棧頂。1112本節內容什么是Android解析Activity的實現12Activity類中的方法android.app.Activity類提供的方法protected
void
onCreate(Bundle
icicle);protected
void
onStart();
protected
void
onRestart();
protected
void
onResume();
protected
void
onFreeze(Bundle
outIcicle)
protected
void
onPause();
protected
void
onStop();
protected
void
onDestroy();13創立Activity程序開發人員可以重寫android.app.Activity類的方法從而使自定義的Activity在狀態改變時執行用戶所期望的操作。下面創立一個名稱為HelloActivity的單Activity的Android應用。14創立Activity的缺省代碼工程創立完成后,該類中的缺省代碼如下所示:publicclassMainActivityextendsActivity{@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){getMenuInflater().inflate(R.menu.activity_main,menu);returntrue;}}15啟動另外一個Activity一個Activity可以啟動另外一個Activity,Activity之間是通過Intent來傳遞消息的。舉個例子說:假設你想讓用戶看到Internet上的某個圖片。當前有一個Activity具有翻開Internet上的某個圖片的功能,那么“宿主Activity〞只需將請求信息放到一個Intent對象里面,并把它傳遞給startActivity()或startActivityForResult()然后瀏覽器就會顯示指定link的圖片。而當用戶按下BACK鍵的時候,宿主Activity又會再一次的顯示在屏幕上。16啟動Activity方式一個Activity可以啟動另外一個Activity,在這里啟動的Activity被稱為〞宿主Activity〞,被啟動的Activity被稱為“隨從Activity〞。有三種方式來啟動另外一個Activity:啟動同一個Application的Activity啟動不同Application的Activity啟動不同apk下的Activity17啟動不同的Application下的Activity實例5-1啟動不同Application的Activity18啟動不同APK下的Activity這種方式〔啟動不同APK下的Activity〕一般用來啟動Android系統提供的Activity。實例5-2啟動一個Android系統提供的“瀏覽網頁〞ActivitypublicclassMainActivityextendsActivity{publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Uriuri=Uri.parse("://baidu");Intentintent=newIntent(Intent.ACTION_VIEW,uri);startActivity(intent);}}19Activity啟動模式Android支持standard、singleTop、singleTask和singleInstance四種啟動模式。可以通過AndroidManifest.xml文件中的<activity>元素的launchMode屬性來配置Activity的啟動模式。例如下面的語句指定“ActivityMain“這個Activity的啟動模式為singleTask:<activityandroid:name="ActivityMain"android:launchMode="singleTask"></activity>20設置Activity許可同API一樣,Android系統開放了許多的底層應用〔如ACTION_CALL〕供用戶調用。Android系統會在運行時檢查該用戶程序是否有權限調用該底層應用,這時需要設置Activity許可才能運行相應的應用。需要通過清單文件設置Activity的許可,否那么程序運行出現錯誤。例如:<uses-permissionandroid:name="android.permission.CALL_PHONE"></uses-permission>2122本節內容什么是AndroidActivity的消息傳遞22Activity間的消息傳遞Android使用Intent〔意圖〕在不同的Activity之間傳遞消息。Intent對象描述了應用中一次操作的動作、數據和附加數據,系統通過該對象的描述調用對應的應用。Intent提供了多個Activity之間進行交互的方式,應用程序可通過startActivity方法指定相應的Intent對象來啟動另外一個Activity。23
Bundle
如果要傳遞自定義的數據時例如將當前Activity的運行狀態傳遞給下一個Activity,可使用Bundle來協助完成。Bundle對象可被理解成一個哈希表,該映射表建立了關鍵字〔標識〕與其值〔傳遞的數據〕的映射關系通過Bundle類的putXXX(Key,Value)方法將數據封裝到Bundle對象中,如putString(Stringkey,Stringvalue)。通過Bundle的getXXX(Stringkey)方法取得關鍵字對應的數據。24
使用Intent和Bundle在Activity間傳遞數據
“宿主Activity“端的流程1〕首先創立一個Intent和Bundle對象,其中Bundle用于存儲傳遞的數據; 2〕然后使用Bundle的put方法輸入要傳遞的數據; 3〕將要傳遞的數據壓入Intent中; 4〕啟動“隨從Activity“。“隨從Activity“端的流程1〕接收“宿主Activity“的Intent;2)傳遞獲得傳入的Bundle對象;3)使用Bundle的get方法獲取要傳遞的數據。2526本節內容什么是AndroidActivity應用26
Activity應用〔續〕
【實例5-4】實現Activities間的消息傳遞。該實例包含了兩個Activity:MainActivityMainActivity通過Bundle綁定單項選擇按鈕值將當前被選中的單項選擇按鈕值傳送給SupplActivity。 myintent.putExtras(mybundle); /*將數據封裝到Intent對象中,通過該Intent對象將數據傳送給相應的Activity*/ MainActivity.this.startActivity(myintent);27
Activity應用〔續〕
SMainActivity啟動SupplActivity,并傳遞給SupplActivity包含RadioButton值的Intent對象,接著SupplActivity通過getIntent方法獲取從MainActivity傳過來Intentmyintent=this.getIntent();//獲取Activity傳遞的IntentBundlemybundle=myintent.getExtras();//獲取Intent的Bundle對象,該對象記錄了傳送的數據值
}28
Activity應用
該程序,選中“Chinese〞單項選擇按鈕,然后點擊“StartSupplActivity〞按鈕〔左圖所示〕。之后,會看到SupplActivity被啟動,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 內科出科考試題及答案
- 駕駛員超速考試題及答案
- 鄭州中職考試試題及答案
- (高清版)DB31∕T 1477-2024 空間地理數據歸集技術要求
- 2022安徽國防科技職業學院招聘筆試真題及答案詳解一套
- Ro-20-1724-Standard-Ro-20-174-Standard-生命科學試劑-MCE
- 會計基礎試題及答案解析
- 2025年項目經營分析報告模板
- 介紹禮儀的題庫及答案
- 2025年農村電商示范縣創建資金申請項目區域創新體系構建報告
- 2025年特種設備安全考試題庫特種設備安全管理人員法規應用試卷
- 普法試題及答案初中
- 中控崗位考試題及答案
- 商鋪退押金協議書
- 碘對比劑護理應用與安全管理
- 2025-2030年中國航空密封件行業市場現狀供需分析及投資評估規劃分析研究報告
- 知識產權租賃協議書
- GB 45673-2025危險化學品企業安全生產標準化通用規范
- 醫院培訓課件:《新生兒早期基本保健專家共識(2020)解讀》
- 魏晉南北朝史講義ppt課件
- 思想品德鑒定表(范例)
評論
0/150
提交評論