【Activity】
一個(gè)Activity是一個(gè)應(yīng)用程序組件,提供一個(gè)屏幕,用戶可以用來交互為了完成某項(xiàng)任務(wù),例如撥號、拍照、發(fā)送email、看地圖。每一個(gè)activity被給予一個(gè)窗口,在上面可以繪制用戶接口。窗口通常充滿屏幕,但也可以小于屏幕而浮于其它窗口之上。
一個(gè)應(yīng)用程序通常由多個(gè)activities組成,他們通常是松耦合關(guān)系。通常,一個(gè)應(yīng)用程序中的activity被指定為"main"activity,當(dāng)?shù)谝淮螁討?yīng)用程序的時(shí)候呈現(xiàn)給用戶的那個(gè)activity。每一個(gè)activity然后可以啟動另一個(gè)activity為了完成不同的動作。每一次一個(gè)activity啟動,前一個(gè)activity就停止了,但是系統(tǒng)保留activity在一個(gè)棧上(“back stack”)。當(dāng)一個(gè)新activity啟動,它被推送到棧頂,取得用戶焦點(diǎn)。Back Stack符合簡單“后進(jìn)先出”原則,所以,當(dāng)用戶完成當(dāng)前activity然后點(diǎn)擊back按鈕,它被彈出棧(并且被摧毀),然后之前的activity恢復(fù)。
當(dāng)一個(gè)activity因新的activity啟動而停止,它被通知這種狀態(tài)轉(zhuǎn)變通過activity的生命周期回調(diào)函數(shù)。有許多回調(diào)函數(shù)一個(gè)activity可能會收到,源于它自己的狀態(tài)變化-無論系統(tǒng)創(chuàng)建它、停止它、恢復(fù)它、摧毀它-并且每個(gè)回調(diào)提供你完成適合這個(gè)狀態(tài)的指定工作的機(jī)會。例如,當(dāng)停止的時(shí)候,你的activity應(yīng)該釋放任何大的對象,例如網(wǎng)絡(luò)數(shù)據(jù)庫連接。當(dāng)activity恢復(fù),你可以重新獲得必要的資源和恢復(fù)被中斷的動作。這些狀態(tài)轉(zhuǎn)換都是activity的生命周期的部分。
【Creating an Activity】
創(chuàng)建一個(gè)activity,你必須創(chuàng)建一個(gè)Activity的子類(或者一個(gè)Activity的子類的子類)。在你的子類中,你需要實(shí)現(xiàn)系統(tǒng)回調(diào)的回調(diào)方法,當(dāng)activity在它的生命周期的多種狀態(tài)中轉(zhuǎn)換的時(shí)候,例如當(dāng)activity被創(chuàng)建、停止、恢復(fù)或摧毀。兩個(gè)最重要的回調(diào)方法是:
onCreate()
你必須實(shí)現(xiàn)這個(gè)方法。系統(tǒng)調(diào)用它當(dāng)創(chuàng)建你的activity的時(shí)候。在你的實(shí)現(xiàn)中,你應(yīng)該初始化你的activity的基本的組件。更重要的是,這里就是你必須調(diào)用setContentView()來定義activity用戶接口而已的地方。
onPause()
系統(tǒng)調(diào)用這個(gè)方法當(dāng)用戶離開你的activity(雖然不總是意味著activity被摧毀)。這通常是你應(yīng)該提交任何變化,那此將會超越user session而存在的(因?yàn)橛脩艨赡懿辉倩貋恚?/p>
有若干其它生命周期回調(diào)函數(shù)你應(yīng)該使用為了提供一個(gè)流暢的用戶體驗(yàn),并表操作異常中斷會引起你的activity被中斷甚至被摧毀。
1、Implementing a user interface
一個(gè)activity的用戶接口被一個(gè)層次化的視圖提供--繼承于View類的對象。每個(gè)View控制activity窗口中的一個(gè)特定矩形區(qū)域并且能響應(yīng)用戶交互。例如,一個(gè)view可能是個(gè)button,初始化動作當(dāng)用戶觸摸它的時(shí)候。
Android提供大量預(yù)定義的view,你可以使用來設(shè)計(jì)和組件你的布局。“Widgets”是一種給屏幕提供可視化(并且交互)元素的view,例如按鈕、文件域、復(fù)選框或者僅僅是圖像?!癓ayouts”是繼承于ViewGroup的View,提供特殊的布局模型為它的子view,例如線程布局、格子布局或相關(guān)性布局。你可以子類化View和ViewGroup類(或者存在的子類)來創(chuàng)建自己的widget和而已并且應(yīng)用它們到你的activity布局中。
最普通的方法是定義一個(gè)布局使用view加上XML布局文件保存在你的程序資源里。這樣,你可以單獨(dú)維護(hù)你的用戶接口設(shè)計(jì),而與定義activity行為的代碼無關(guān)。你可以設(shè)置布局作為UI使用setContentView(),傳遞資源布局的資源ID??墒牵阋部梢詣?chuàng)建新Views在你的activity代碼,并且創(chuàng)建一個(gè)view層次通過插入新Views到ViewGroup,然后使用那個(gè)布局通過傳遞到根ViewGroup給setContentView()。
新聞熱點(diǎn)
疑難解答
圖片精選