android Activity類的使用在android開發(fā)中Activity非常重要,在一個應(yīng)用中,每一個顯示的屏幕都是一個Activity.所以學(xué)習(xí)android,必須要對Activity有一定的了解.在其他論壇中也有一些關(guān)于Activity的介紹,我在這里就想談?wù)勎覍ctivity學(xué)習(xí)的一些看法.首先Activity的生命周期很重要,Activity主要包含六個方法,分別是onCreate,onStart,onResume,onPause,onStop,onDestory.
onCreate和onDestory對應(yīng).onStart和onStop對應(yīng),onResume和onPause對應(yīng). 這幾個函數(shù)大概是這樣定義的,當(dāng)啟動一個Activity的時候,onCreate方法首先會被啟動,然后接著是onStart和onResume,也會啟動,一般地,等這幾個函數(shù)都啟動完了之后你這個Activity就可以被顯示出來了.當(dāng)然我這里說的是一般的情況,如果你要是在這三個函數(shù)初始化的時候啟動了一個后臺的Service,那么還要等待ServiceConnection執(zhí)行完畢才能夠被顯示出來,這里可能有人要問什么是Service了,在以后我會介紹它,這里大家就先了解下Service的回調(diào)函數(shù)也會影響Acitivity的啟動就可以了.這是Activity啟動時會調(diào)用的三個函數(shù),在Acitivity銷毀的時候會調(diào)用onPause,onStop,onDestory.當(dāng)調(diào)用完onDestory之后,你的Acitivity也就被銷毀完畢了,這時候你在調(diào)用Activity的isFinishing的時候,就會返回true,但是此時Activity的this指針還可以被使用,如果你在Activity單起一個線程做其他事情的話,那么上下文變量context指針還是能夠被使用的. 下面我來總結(jié)一下Activity一個大概的設(shè)計思路: 首先設(shè)計一個方法,這個方法主要作用就是初始化Activity的控件,進行各種條件判斷,對Acitvity來進行不用的布局初始化,這里舉個例子來解釋下為什么要初始化不同的布局,例如你的這個Activity從SD卡讀取了一些信息,那么當(dāng)你拔出SD卡的時候這些信息肯定也就沒有了,那么你就要進行另外的一個布局來顯示這個Activity,這個時候你就可以重用這個函數(shù)來進行布局的初始化. onCreate函數(shù):注冊你要用到的變量,比如說service,receiver,這些變量是無論你的Activity是在前臺還是在后臺都能夠被響應(yīng)到的,然后調(diào)用上面那個用來初始化的函數(shù)初始化布局信息. onStart函數(shù):注冊一些變量.這些變量必須在Activity在前臺的時候才能夠被響應(yīng). onResume函數(shù):調(diào)用一些刷新UI的函數(shù),每當(dāng)Activity調(diào)用到這里時就要刷新一下UI各控件的狀態(tài). onPause函數(shù):一般是做一些變量的設(shè)置,因為這個時候Activity馬上就要切到后臺處理,可能有些變量就要被釋放掉或者狀態(tài)要做些相應(yīng)的調(diào)整. onStop函數(shù):反注冊在onStart函數(shù)中注冊的變量. onDestory函數(shù):反注冊在onCreate函數(shù)中注冊的變量. 上面談了些Activity的最常用的一些方法,當(dāng)然還有很多方法沒有談到,有很多方法我也沒有用過,其他方法大家可以參考google的文檔. 接下來我來談?wù)凙ctivity中最簡單的一些通信方法,這里我先定義兩個名字為方便接下來的敘述,啟動另外一個Activity的那個Activity我們稱之為主Activity,被啟動的那個Activity我們稱之為子Activity. 主Activity和子Acitivity通信的方式有很多種這里介紹兩種最簡單的方法。 方法一:通過Intent來進行參數(shù)的傳遞,在Intent中有各種putXXX方法來存放各種參數(shù),然后在子Activity接收到這個Intent時能夠從這個Intent里取出這個參數(shù),利用getIntnet().getXXXExtra()方法就可以了. 方法二:當(dāng)一個主Activity想從一個子Activity接受消息時可以使用StartActivityforResult方法,例如這樣啟動一個Activity,startActivityForResult(i, REQUEST_CODE); 然后在主Activity中的onActivityResult方法對requestCode進行判斷來對子Activity不同的返回處理不同的情況,另外子Activity也可以利用setResult方法來設(shè)置主Activity方法中的resultCode,這樣主Activity也可以根據(jù)子Activity的不同的resultCode來處理不同的情況. |
|