版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Android 系統(tǒng)簡(jiǎn)介,Android 系統(tǒng)簡(jiǎn)介,Android的前世今生 Android的優(yōu)勢(shì) Android系統(tǒng)架構(gòu),Android的前世今生,Android的誕生,Android 發(fā)展,2007.11.5 Android 平臺(tái)發(fā)布 2008.9.22 T-Mobile G1上市 2009年1季度 G1銷售100萬支 2009.3 MWC華為發(fā)布Android手機(jī) Moto,三星,LG計(jì)劃2009年下半年推出Android手機(jī) 2009 獲得Orange, Vodafone, O2, Telefonica支持 2009進(jìn)軍上網(wǎng)本,Android的前世今生,Nokia/Apple/Goog
2、le的戰(zhàn)爭(zhēng),Android的優(yōu)勢(shì),開放性 所有的應(yīng)用是平等的 應(yīng)用間無界限 快速方便的應(yīng)用開發(fā),開放性,谷歌與開放手機(jī)聯(lián)盟合作開發(fā)了 Android,這個(gè)聯(lián)盟由包括中國(guó)移動(dòng)、摩托羅拉、高通、宏達(dá)和 T-Mobile 在內(nèi)的 30 多家技術(shù)和無線應(yīng)用的領(lǐng)軍企業(yè)組成。 Android 是一個(gè)真正意義上的開放性移動(dòng)設(shè)備綜合平臺(tái)。 通過與運(yùn)營(yíng)商、設(shè)備制造商、開發(fā)商和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系,來建立標(biāo)準(zhǔn)化、開放式的移動(dòng)電話軟件平臺(tái),在移動(dòng)產(chǎn)業(yè)內(nèi)形成一個(gè)開放式的生態(tài)系統(tǒng),這樣應(yīng)用之間的通用性和互聯(lián)性將在最大程度上得到保持。,應(yīng)用平等,所有的Android應(yīng)用之間是完全平等的。 所有的應(yīng)用都運(yùn)行
3、在一個(gè)核心的引擎上面,這個(gè)核心引擎其實(shí)就是一個(gè)虛擬機(jī),它提供了一系列用于應(yīng)用和硬件資源間進(jìn)行通訊的API。 撇開這個(gè)核心引擎,Android的所有其他的東西都是”應(yīng)用”。,應(yīng)用平等,應(yīng)用無界限,Android打破了應(yīng)用之間的界限,比如開發(fā)人員可以把Web上的數(shù)據(jù)與本地的聯(lián)系人,日歷,位置信息結(jié)合起來,為用戶創(chuàng)造全新的用戶體驗(yàn)。,快速方便的開發(fā)應(yīng)用,Android平臺(tái)為開發(fā)人員提供了大量的實(shí)用庫(kù)和工具,開發(fā)人員可以很快速的創(chuàng)建自己的應(yīng)用。例如在別的手機(jī)平臺(tái)上要進(jìn)行基于位置的應(yīng)用的開發(fā)是相當(dāng)?shù)膹?fù)雜的,而Android將Google Map集成了進(jìn)來,開發(fā)人員通過簡(jiǎn)單的幾行代碼就可以實(shí)現(xiàn)一個(gè)如圖 1
4、 6的一個(gè)地圖應(yīng)用,更詳細(xì)的介紹可以參見第八章。,Android系統(tǒng)架構(gòu),建立Android 開發(fā)環(huán)境,建立Android 開發(fā)環(huán)境,JDK安裝 Android SDK安裝以及系統(tǒng)設(shè)置 Eclipse安裝以及ADT工具的安裝,第一個(gè)Android應(yīng)用,第一個(gè)Android應(yīng)用,分析Hello Android Android程序的結(jié)構(gòu) 添加編輯框與按鈕,Android程序基礎(chǔ),Android 程序基礎(chǔ),Android程序的構(gòu)成 應(yīng)用的生命周期,Android應(yīng)用程序的構(gòu)成,Android應(yīng)用程序的構(gòu)成,應(yīng)用生命周期,Android引入了一個(gè)全新的機(jī)制-應(yīng)用程序生命周期(Life Cycle)。
5、多數(shù)情況下,一個(gè)Android應(yīng)用運(yùn)行在一個(gè)獨(dú)立的Linux進(jìn)程中 應(yīng)用進(jìn)程的的生命周期(存活時(shí)間)不是由進(jìn)程自己控制,而是由Android系統(tǒng)決定 影響應(yīng)用生命周期的主要因素包括:該進(jìn)程對(duì)于用戶的重要性,以及當(dāng)前系統(tǒng)中還剩多少可用內(nèi)存。,應(yīng)用生命周期,應(yīng)用生命周期,應(yīng)用生命周期,應(yīng)用生命周期,應(yīng)用生命周期,應(yīng)用生命周期,應(yīng)用生命周期,Intent與Activity,Intent與Actitity,Intent 與 Intent filters Broadcast Intent Receiver 添加新的Activity,Activity,何謂Activity:最簡(jiǎn)單的就是你可以把Activi
6、ty看成一個(gè)User Interface Program,原則上它會(huì)提供使用者一個(gè)交互式的接口功能,那一個(gè)activity只有一個(gè)UI嗎?非也,舉例來說:一個(gè)email程序,就可能 包含三個(gè)activity 郵件列表的activity 顯示郵件內(nèi)容的activity 寫新郵件或回復(fù)郵件的activity 所 有的Activity在系統(tǒng)里由Activity堆棧所管理,當(dāng)一個(gè)新的Activity被執(zhí)行后,它將會(huì)被放置到堆棧的最頂端,并且變 成running activity, 而先前的Activity原則上還是會(huì)存在于堆棧中,但它此時(shí)不會(huì)是在前景的情況,除非剛剛那個(gè)新的Activity離開。,In
7、tent,Android使用了一個(gè)很特別的類別叫Intent, 用來從一個(gè)畫面跳到另一個(gè)畫面。 Intent是用來描述一個(gè)程序想要作些什么事情。 在Intent的數(shù)據(jù)結(jié)構(gòu)里有兩個(gè)很重要的部份,一個(gè)是動(dòng)作 (action)及對(duì)數(shù)據(jù)產(chǎn)生反應(yīng)(data to act upon)。action主要的內(nèi)容有MAIN(程序的進(jìn)入點(diǎn)),VIEW,PICK,EDIT等等。data則是用URI的形示來表示。比如:想要查看 一個(gè)人的聯(lián)絡(luò)數(shù)據(jù)時(shí),你需要建立一個(gè)Intent,它包含了VIEW的動(dòng)作(action)及指向該人數(shù)據(jù)的URI描述句。,Intent Filter,當(dāng)Intent要求做某些事情時(shí),IntentF
8、ilter被用來描述這個(gè)activity能夠做些什么事情。比如 一個(gè)activity要能夠顯示個(gè)人聯(lián)絡(luò)數(shù)據(jù),你就必需要在IntentFilter說明你要如何處理個(gè)人聯(lián)絡(luò)數(shù)據(jù)并用ACTION_VIEW呈現(xiàn)出來。 IntentFilter都會(huì)在AndroidManifest.xml清單里面聲明。,Broadcast Intent Receiver,當(dāng)你想要寫一個(gè)程序來對(duì)外部的事件做些處理時(shí),可以使用Broadcast Intent Receiver。比如:當(dāng)電話響時(shí),有短信時(shí)。Broadcast Intent Receiver它并不能拿來顯示UI畫面,它必需利用NotificationManage
9、r來通知使用者他們感興趣的事件發(fā)生了。 Broadcast Intent Receiver同樣的可以在AndroidManifest.xml中聲明,但你也可以用寫 Context.registerReceiver()程序的方式來注冊(cè)你自己的Broadcast Intent Receiver。你自己的程序并不會(huì)因?yàn)锽roadcastReceivers被呼叫而被它執(zhí)行起來。而是當(dāng)BroadcastReceiver被觸發(fā) 時(shí)系統(tǒng)會(huì)依需求來執(zhí)行相對(duì)應(yīng)的程序。程序可以利用Context.sendBroadcast()來發(fā)出他們自己的intent broadcast給其它的程序。,Intent 與 Act
10、ivity,畫面的切來切去則是由resolving intent來實(shí)現(xiàn)的。當(dāng)你想產(chǎn)生新的畫面時(shí),現(xiàn)行的activity就使用startActivity(myIntent)。 系統(tǒng)會(huì)根據(jù)所有已安裝的程序所定義的intent filter來看那個(gè)程序是最適合myIntent。 當(dāng)startActivity被呼叫時(shí),resolving Intents的處理過程是伴隨而來的。resolving intent提供我們兩個(gè)好處: 讓Activities可以很容易的利用Intent的方式去使用別的程序的功能。 Activities可以很容易的在任何情況下由新Activity所取代。,Activity生命周期
11、,Activity生命周期,使用Bundle在Activity間傳遞數(shù)據(jù) Log與DDMS Activity生命周期,Activity,何謂Activity:最簡(jiǎn)單的就是你可以把Activity看成一個(gè)User Interface Program,原則上它會(huì)提供使用者一個(gè)交互式的接口功能,那一個(gè)activity只有一個(gè)UI嗎?非也,舉例來說:一個(gè)email程序,就可能 包含三個(gè)activity 郵件列表的activity 顯示郵件內(nèi)容的activity 寫新郵件或回復(fù)郵件的activity 所 有的Activity在系統(tǒng)里由Activity堆棧所管理,當(dāng)一個(gè)新的Activity被執(zhí)行后,它將會(huì)
12、被放置到堆棧的最頂端,并且變 成running activity, 而先前的Activity原則上還是會(huì)存在于堆棧中,但它此時(shí)不會(huì)是在前景的情況,除非剛剛那個(gè)新的Activity離開。,Activity狀態(tài),當(dāng)一個(gè)Activity在屏幕的最上層時(shí)(堆棧的最頂端),它就是屬于active或running的狀態(tài) 如果一個(gè)Activity失去焦點(diǎn)(focus)但還看得到它的畫面(比如:一個(gè)新的Activity畫面并不是全屏幕或者它是一個(gè)半透明的情況),那失去焦點(diǎn)的這個(gè)Activity則處在paused的狀態(tài)。像這個(gè)失去焦點(diǎn)的Activity它還是完全活著的,并沒有消失。(活著的意思是指,Activi
13、ty自已本身所有的狀態(tài)及數(shù)據(jù)都還是存在的,也跟窗口管理程序window manager保持連系著),像這種paused的activity,會(huì)在一種情況下消失,那就是當(dāng)系統(tǒng)的內(nèi)存不夠用之時(shí),系統(tǒng)會(huì)自動(dòng)判斷,把不重要的 activity移除。,Activity狀態(tài)-cont,如果一個(gè)Activity被其它的Activity完全的遮住時(shí),這個(gè)被遮的Activity處于stop的狀態(tài),它仍然保有全部的狀態(tài)及數(shù)據(jù),但因?yàn)樗巡辉俦皇褂谜呖匆姡运漠嬅媸潜浑[藏起來的(畫面不需要更新),當(dāng)系統(tǒng)內(nèi)存不足時(shí),這種stop狀態(tài)的activity是最先被系統(tǒng)考慮拿來釋放內(nèi)存的。,Activity狀態(tài)-cont,
14、當(dāng)一個(gè)Activity處于pause或stop的狀態(tài)時(shí),系統(tǒng)可以要求Activity結(jié)束(finish)或直接移除(kill)它。當(dāng)它需要再度呈現(xiàn)在使用者面前時(shí),它必需要能完整的重新啟動(dòng)及回復(fù)先前的狀態(tài),使用Service,使用Service,什么是服務(wù)(service) 如何使用服務(wù) 使用服務(wù)進(jìn)行音樂播放,Service,服務(wù)是運(yùn)行在后臺(tái)的一段代碼。它可以運(yùn)行在它自己的進(jìn)程,也可以運(yùn)行在其他應(yīng)用程序進(jìn)程的上下文(context)里面,這取決于自身的需要。其它的組件可以綁定到一個(gè)服 務(wù)(Service)上面,通過遠(yuǎn)程過程調(diào)用(RPC)來調(diào)用這個(gè)方法。例如媒體播放器的服務(wù), 當(dāng)用戶退出媒體選擇用
15、戶界面,仍然希望音樂依然可以繼續(xù)播放,這時(shí)就是由服務(wù) (service)來保證當(dāng)用戶界面關(guān)閉時(shí)音樂繼續(xù)播放的。,如何使用Service,第一種是通過調(diào)用Context.startService()啟動(dòng),調(diào)用Context.stopService()結(jié)束,startService()可以傳遞參數(shù)給Service。 第二種方式是通過調(diào)用Context.bindService()啟動(dòng),調(diào)用Context.unbindservice()結(jié)束,還可以通過ServiceConnection訪問Service。二者可以混合使用,比如說我可以先startService再bindservice。,Service
16、的生命周期,startService后,即使調(diào)用startService的進(jìn)程結(jié)束了Service仍然還存在,直到有進(jìn)程調(diào)用stopService,或者Service自己自殺(stopSelf())就沒法了 bindService后,Service就和調(diào)用bindService的進(jìn)程同生共死了,也就是說當(dāng)調(diào)用bindService的進(jìn)程死了,那么它bind的Service也要跟著被結(jié)束,當(dāng)然期間也可以調(diào)用unbindservice讓 Service結(jié)束。 兩種方式混合使用時(shí),比如說你startService了,我bindService了,那么只有你stopService了而且我也unbinds
17、ervice了,這個(gè)Service才會(huì)被結(jié)束。,進(jìn)程生命周期,Android系統(tǒng)將會(huì)嘗試保留那些啟動(dòng)了的或者是綁定了服務(wù)的進(jìn)程 如果該服務(wù)正在進(jìn)程的onCreate(), onStart(), 或者 onDestroy() 這些方法中執(zhí)行時(shí), 那么主進(jìn)程將會(huì)成為一個(gè)前臺(tái)進(jìn)程,以確保此代碼不會(huì)被停止 如果服務(wù)已經(jīng)開始,那么它的主進(jìn)程會(huì)就重要性而言低于所有可見的進(jìn)程但高于不可見的進(jìn)程, 由于只有少數(shù)幾個(gè)進(jìn)程是用戶可見的,所以只要不是內(nèi)存特別低,該服務(wù)不會(huì)停止. 如果有多個(gè)客戶端綁定了服務(wù), 只要客戶端中的一個(gè)對(duì)于用戶是可見的,即認(rèn)為該服務(wù)可見,Content Provider,Content Pr
18、ovider,為什么需要Content Provider 如何使用Content Provider,為什么需要Content Provider,為在 Android 中,每個(gè)應(yīng)用程序都是用自己的 user ID 及在自己的 process 中執(zhí)行 當(dāng)應(yīng)用程序彼此間要分享數(shù)據(jù)時(shí),這樣的架構(gòu)勢(shì)必要提供一個(gè)好的解決方案才行 為了解決應(yīng)用程序間,彼此要分享數(shù)據(jù)的需求,Android 提供了 Content Provider 這個(gè)機(jī)制。,使用Content Provider,每一種Content Provider都提供一個(gè)唯一公共URI(由ContentURI封裝),它將被客戶端用于從內(nèi)容提供器請(qǐng)求/添加/更新/刪除數(shù)據(jù)。 vider.Contacts.Phones.CONTENT_URI vider.Contacts.Photos.CONTENT_URI and
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度生物質(zhì)能源項(xiàng)目股權(quán)分配合同范本3篇
- 2025年度風(fēng)力發(fā)電場(chǎng)場(chǎng)地平整與風(fēng)力塔安裝施工協(xié)議4篇
- 2025年度城市綠化工程苗木采購(gòu)合同3篇
- 二零二五年度能源項(xiàng)目100%股權(quán)轉(zhuǎn)讓合同3篇
- 專業(yè)旅客出行服務(wù)協(xié)議定制版
- 2024試用期工作關(guān)系協(xié)議范本版B版
- 2025年度臨時(shí)場(chǎng)地租賃合同終止及場(chǎng)地恢復(fù)協(xié)議4篇
- 2025年度二零二五購(gòu)物中心攤位租賃及營(yíng)銷支持合同4篇
- 2025年度詳盡場(chǎng)景主播合作框架協(xié)議4篇
- 個(gè)人借款合同模板:無擔(dān)保短期資金周轉(zhuǎn)版B版
- 護(hù)理員技能培訓(xùn)課件
- 員工宿舍用電安全培訓(xùn)
- 家庭年度盤點(diǎn)模板
- 河南省鄭州市2023-2024學(xué)年高二上學(xué)期期末考試 數(shù)學(xué) 含答案
- 2024年資格考試-WSET二級(jí)認(rèn)證考試近5年真題集錦(頻考類試題)帶答案
- 試卷中國(guó)電子學(xué)會(huì)青少年軟件編程等級(jí)考試標(biāo)準(zhǔn)python三級(jí)練習(xí)
- 公益慈善機(jī)構(gòu)數(shù)字化轉(zhuǎn)型行業(yè)三年發(fā)展洞察報(bào)告
- 飼料廠現(xiàn)場(chǎng)管理類隱患排查治理清單
- 【名著閱讀】《紅巖》30題(附答案解析)
- Starter Unit 2 同步練習(xí)人教版2024七年級(jí)英語(yǔ)上冊(cè)
- 分?jǐn)?shù)的加法、減法、乘法和除法運(yùn)算規(guī)律
評(píng)論
0/150
提交評(píng)論