国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

深入剖析Android Activity

2011-11-09 00:44:38段琳
中國新技術(shù)新產(chǎn)品 2011年16期
關(guān)鍵詞:用戶界面接收器調(diào)用

段琳

(安徽理工大學(xué)計算機(jī)科學(xué)與工程學(xué)院,安徽 淮南 232001)

引言

活動是最基本的android應(yīng)用程序組件,應(yīng)用程序中,一個活動通常是一個單獨的屏幕,Activity代表一個用戶所能看到的屏幕,Activity主要處理一個應(yīng)用的整體性工作,對其概念及生命周期進(jìn)行剖析可加深對其了解,加強(qiáng)對其靈活應(yīng)用。

1 Android應(yīng)用程序的組成

Android系統(tǒng)是Google公司開發(fā)的基于Linux平臺的開源手機(jī)操作系統(tǒng),該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,是首個為移動終端打造的開放和完整的移動軟件。一個通過Android框架所創(chuàng)建的Android應(yīng)用程序,有四種基本類型。

(1)Activities。Activities類似于桌面系統(tǒng)下的獨立應(yīng)用程序,例如:office辦公軟件。Activities是由許多需要及時運行的可執(zhí)行代碼組成,用戶或者操作系統(tǒng)都可以通過實例化,運行Activities。Activities可以與用戶機(jī)型交互,并且可以通過使用query或Intent對象向其他的Activities或服務(wù)請求數(shù)據(jù)或服務(wù)。

許多Android可執(zhí)行代碼將在Activity的環(huán)境下執(zhí)行。Activities通常相當(dāng)于一個顯示器:每個Activity都有一個界面提供給用戶。當(dāng)一個Activity當(dāng)前不再運行時,操作系統(tǒng)將其殺死以保護(hù)內(nèi)存。

(2)Services。Services類似于桌面操作系統(tǒng)和服務(wù)器操作系統(tǒng)的服務(wù)或守護(hù)程序。Services是由一些可執(zhí)行代碼組成,通過實例化運行在后臺,并且直到手持設(shè)備關(guān)閉后才結(jié)束。Services一般沒有用戶界面。

(3)Broadcast and Intent Receivers。這些接收器是對其他應(yīng)用程序的服務(wù)請求作出響應(yīng)。一個廣播信息接收器是在系統(tǒng)做大規(guī)模廣播事件時作出響應(yīng)。這個廣播信息可以來自Android系統(tǒng)自身或者來自運行在該系統(tǒng)上的一些程序。一個Activity或者Service給其他應(yīng)用提供了執(zhí)行一個Intent接收器來訪問自己功能的途徑,該Intent接收器是由一段可以向其他Activities請求數(shù)據(jù)或服務(wù)的可執(zhí)行代碼組成。請求Activity創(chuàng)建一個Intent,并由Android框架通過分析作出決定是哪個應(yīng)用程序接收并應(yīng)用它。Intents在Android中是一個關(guān)鍵結(jié)構(gòu)元素,可以使從已存在的應(yīng)用中創(chuàng)建新的應(yīng)用,在你的應(yīng)用程序中,你可以通過使用Intent對象與那些可以提供你所需要的信息的其他應(yīng)用程序和服務(wù)相互配合。

(4)Content providers。Content提供器是用來創(chuàng)建與其他Activity和Service共享數(shù)據(jù)的對象。一個Content Provider使用一個用URI組成的標(biāo)準(zhǔn)接口來實現(xiàn)向其他應(yīng)用程序請求數(shù)據(jù),即使那些應(yīng)用程序可能不知道使用的是哪個Content Provider。例如:當(dāng)一個應(yīng)用程序執(zhí)行一個Query對象來查找數(shù)據(jù),它所執(zhí)行的URI結(jié)構(gòu)如下:

content://contacts/people

操作系統(tǒng)依靠觀察哪個應(yīng)用程序?qū)⒆约鹤鳛橐粋€Content Provider來提供URI,并且發(fā)送請求給對應(yīng)的應(yīng)用程序。如果不止一個Content Provider注冊提供URI,操作系統(tǒng)將詢問用戶將使用哪個。一個應(yīng)用程序沒有要求必須使用所有的Android組件,但是一個優(yōu)秀的應(yīng)用程序?qū)⑹褂闷涮峁┑臉?gòu)建機(jī)制,這樣就不會出現(xiàn)代碼重復(fù)或者引用其他應(yīng)用程序很困難的情況。URI和Intent一起為用戶提供了靈活的Android環(huán)境。你可以很簡單的添加、刪除和取代一個應(yīng)用程序,并且在Intent和URI的松耦合配合下,可以保證所有的事情一起進(jìn)行。

2.Activity相關(guān)概念

一個Activity相當(dāng)于手機(jī)的一屏,它能夠獲得焦點,用戶一般都在它上面操作。幾乎所有的activity都跟用戶打交道,所以Activity類主要負(fù)責(zé)創(chuàng)建一個窗口,可以通過調(diào)用setContentView(View)方法在Activity上放置UI組件。Activity除了通常作為一個全屏的窗口呈現(xiàn)給用戶之外,它們還有其他的使用方法:

(1)作為一個浮動窗口,這可以通過設(shè)置theme屬性windowIsFloatting來實現(xiàn);

(2)嵌入其他的Activity,這使用Activity-Group來實現(xiàn)。

Activity的子類通常要實現(xiàn)如下兩個方法,也就是說,當(dāng)你要自己創(chuàng)建一個activity的時候,一般需要實現(xiàn)的:

(1)onCreate(Bundle)。我們可以在該方法里初始化Activity。通常,我們在這個方法里調(diào)用setContentView(int)來設(shè)置Activity的內(nèi)容,這個方法的int類型的形參是一個布局資源的ID,我們在這個布局中就設(shè)計好了Activity的內(nèi)容了。此外,使用findViewById(int)方法檢索到我們要進(jìn)行交互的widgets組件。

(2)onPause()。當(dāng)用戶離開當(dāng)前activity的時候,我們就在這個方法里面處理,一般來說,就是處理用戶所作的改變,譬如用戶填寫了一些數(shù)據(jù),我們就在這個方法里提交這些數(shù)據(jù)進(jìn)行保存,通常是保存到Content Providers。

3.Android活動Activity的生命周期

Android是圍繞移動應(yīng)用的唯一需求進(jìn)行設(shè)計的。在特定情況下,Android可以識別移動設(shè)備上受限制的資源(如內(nèi)存和電量),以及提供相應(yīng)的機(jī)制保護(hù)這些資源。這些機(jī)制在Android的Activity生命周期體現(xiàn)得很明顯,定義了Activity從創(chuàng)建到銷毀的過程狀態(tài)和事件。

Android活動Activity是一個非常著名的生命周期,每個Android應(yīng)用程序的活動都有幾個狀態(tài),如圖1所示,但開發(fā)者是不需要關(guān)心應(yīng)用程序是什么狀態(tài),這全部由Android操作系統(tǒng)負(fù)責(zé)管理。開發(fā)者可以通過調(diào)用相關(guān)的方法獲知到應(yīng)用程序活動狀態(tài)即將改變。

圖1 Activity生命周期

開發(fā)者只需要在Activity類中重載圖1中的相應(yīng)方法,以便在狀態(tài)發(fā)生變化時做一些需要的控制:

onCreate(Bundle):活動activity在第一次被創(chuàng)建時調(diào)用該方法,開發(fā)者可以在該方法中做一些初始化工作,比如創(chuàng)建用戶界面,創(chuàng)建你的視圖和打開Activity需要用到的所有數(shù)據(jù)文件。onCreate允許一個null參數(shù),或者是一個由on-SaveInstanceState()方法保存下的狀態(tài)作為參數(shù)。onStart():表示該活動將要顯示給用戶。

onResume():當(dāng)活動可以與用戶交互時調(diào)用該方法。在此開發(fā)播放動畫和音樂是一個很不錯的時機(jī)。

onPause():當(dāng)活動將要被放置到后臺(background)運行時調(diào)用該方法,通常另一個活動被激活或啟動到前段(foreground)時,在此時可以保存應(yīng)用程序的狀態(tài)。

onStop():當(dāng)活動Activity在一段時間里用戶不可見和需要時,將調(diào)用該方法。如果設(shè)備內(nèi)存緊張時,可能不會調(diào)用這個方法,此時操作系統(tǒng)只簡單的終端進(jìn)行。

onRestart():當(dāng)該方法調(diào)用時,標(biāo)志該活動將重新從停止?fàn)顟B(tài)顯示到前端。

onDestroy():當(dāng)活動被銷毀時調(diào)用該方法。當(dāng)內(nèi)存緊張時,系統(tǒng)不一定會調(diào)用onDestroy()這個方法。

onSaveInstanceState(Bundle):Android 調(diào)用這個方法保存活動的先前狀態(tài),比如光標(biāo)在文本編輯框中的位置,一般來說,我們是不需要重載這個方法的,因為系統(tǒng)缺省是自動保存用戶界面所有的狀態(tài)的。

那些沒有運行在前端的活動可能會被停止,或者被Linux進(jìn)程管理殺死進(jìn)行,以為新的活動騰出更多的資源,這個經(jīng)常發(fā)生的情況,因此開發(fā)者在設(shè)計程序之初就要重新考慮這個問題。在大多數(shù)情況下,onPause()是活動中最后調(diào)用的方法,因此可以在這個方法里保存數(shù)據(jù)。

4.結(jié)束語

本文重點描述了Android中的Activity生命周期,在Activity的生命周期中,只要離開了可見狀態(tài),或者說失去了焦點,activity就很可能被進(jìn)行終止。隨著Google公司大力推廣Android平臺和Android智能手機(jī),相信人們會越來越重視Android的相關(guān)知識,針對Activity生命周期的研究也會越來越深入。

[1]Mark L.Murphy.Beginning Android 2[M].A-press,2010.

[2]蓋索林.Google Android 開發(fā)入門指南[M].北京:人民郵電出版社,2009.

[3]郭宏志.Android 應(yīng)用開發(fā)詳解[M].北京:電子工業(yè)出版社,2010.

[4]韓超.Android 系統(tǒng)原理及開發(fā)要點詳解[M].北京:電子工業(yè)出版社,2010.

[5][美]Sayed Y.Hashimi,[印]Satyo Komatineni,[美]Dave MacLean.精通 Android 2[M].楊越,譯.北京:人民郵電出版社,2010.

猜你喜歡
用戶界面接收器調(diào)用
自然用戶界面在智能家居系統(tǒng)中的應(yīng)用路徑創(chuàng)新研究:生成式人工智能技術(shù)的調(diào)節(jié)作用
包裝工程(2023年16期)2023-08-25 11:40:58
基于CiteSpace的國外用戶界面體驗圖譜量化分析
核電項目物項調(diào)用管理的應(yīng)用研究
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
JXG-50S型相敏軌道電路接收器自動測試臺
UI用戶界面色彩設(shè)計研究
流行色(2017年12期)2017-10-26 03:08:44
埃及
基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
ZPW-2000A軌道電路接收器冗余電路存在問題分析及對策
基于B/S的跨平臺用戶界面可配置算法研究
兰州市| 通城县| 霍城县| 介休市| 大竹县| 平遥县| 舞钢市| 武功县| 南阳市| 汨罗市| 江城| 安徽省| 福泉市| 梁河县| 吉木乃县| 通化市| 阿拉善左旗| 百色市| 柯坪县| 武安市| 都安| 许昌市| 榕江县| 安丘市| 金山区| 东乡| 沂南县| 虹口区| 贺兰县| 昆山市| 万源市| 彰化市| 新巴尔虎右旗| 昭通市| 延庆县| 尚志市| 河源市| 汕头市| 永泰县| 宜阳县| 织金县|