深度說(shuō)明Android 程序轉(zhuǎn)換
在Android 程序中,有關(guān)缺省變量值的限制非常模糊?;诖?,很多編譯器允許開(kāi)發(fā)人員將缺省變量值包含在函數(shù)聲明,指向函數(shù)的指針和引用,成員函數(shù)的指針,以及typedef聲明中。
Activity 的狀態(tài)及狀態(tài)間的轉(zhuǎn)換 在Android 程序中,Activity 擁有四種基本狀態(tài):Active/Runing 一個(gè)新 Activity 啟動(dòng)入棧后。它在屏幕最前端,處于棧的最頂端,此時(shí)它處于可見(jiàn)并可和用戶交互的激活狀態(tài)。 Paused 當(dāng) Activity 被另一個(gè)透明或者 Dialog 樣式的 Activity 覆蓋時(shí)的狀態(tài)。
此時(shí)它依然與窗口管理器保持連接,系統(tǒng)繼續(xù)維護(hù)其內(nèi)部狀態(tài),所以它仍然可見(jiàn),但它已經(jīng)失去了焦點(diǎn)故不可與用戶交互。
Stoped 當(dāng) Activity 被另外一個(gè)Android 程序 、失去焦點(diǎn)并不可見(jiàn)時(shí)處于 Stop ed 狀態(tài)。 Killed Activity 被系統(tǒng)殺死回收或者沒(méi)有被啟動(dòng)時(shí)處于 Killed 狀態(tài)。
當(dāng)一個(gè) Activity 實(shí)例被創(chuàng)建、銷毀或者啟動(dòng)另外一個(gè) Activity 時(shí),它在這四種狀態(tài)之間進(jìn)行轉(zhuǎn)換,這種轉(zhuǎn)換的發(fā)生依賴于用戶程序的動(dòng)作。下圖說(shuō)明了 Activity 在不同狀態(tài)間轉(zhuǎn)換的時(shí)機(jī)和條件:平臺(tái)可以促使移動(dòng)設(shè)備的創(chuàng)新,讓用戶體驗(yàn)到***越的移動(dòng)服務(wù),同時(shí),開(kāi)發(fā)商也將得到一個(gè)新的開(kāi)放級(jí)別。
如上所示,Android 程序員可以決定一個(gè) Activity 的“生”,但不能決定它的“死”,也就時(shí)說(shuō)程序員可以啟動(dòng)一個(gè) Activity,但是卻不能手動(dòng)的“結(jié)束”一個(gè) Activity。當(dāng)你調(diào)用 Activity.finish() 方法時(shí)。
結(jié)果和用戶按下 BACK 鍵一樣:告訴 Activity Manager 該 Activity 實(shí)例完成了相應(yīng)的工作,可以被“回收”。隨后 Activity Manager 激活處于棧第二層的 Activity 并重新入棧,同時(shí)原 Activity 被壓入到棧的第二層,從 Active 狀態(tài)轉(zhuǎn)到 Paused 狀態(tài)。
例如:從 Activity1 中啟動(dòng)了 Activity2,則當(dāng)前處于棧頂端的是 Activity2,第二層是 Activity1,當(dāng)我們調(diào)用 Activity2.finish() 方法時(shí),Activity Manager 重新激活 Activity1 并入棧。Activity2 從 Active 狀態(tài)轉(zhuǎn)換 Stoped 狀態(tài),Activity1. onActivityResult(int requestCode, int resultCode, Intent data) 方法被執(zhí)行,Activity2 返回的數(shù)據(jù)通過(guò) data 參數(shù)返回給 Activity1。
【編輯推薦】