版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Android 系統(tǒng)簡介,Android 系統(tǒng)簡介,Android的前世今生 Android的優(yōu)勢 Android系統(tǒng)架構(gòu),Android的前世今生,Android的誕生,Android 發(fā)展,2007.11.5 Android 平臺發(fā)布 2008.9.22 T-Mobile G1上市 2009年1季度 G1銷售100萬支 2009.3 MWC華為發(fā)布Android手機 Moto,三星,LG計劃2009年下半年推出Android手機 2009 獲得Orange, Vodafone, O2, Telefonica支持 2009進軍上網(wǎng)本,Android的前世今生,Nokia/Apple/Goog
2、le的戰(zhàn)爭,Android的優(yōu)勢,開放性 所有的應(yīng)用是平等的 應(yīng)用間無界限 快速方便的應(yīng)用開發(fā),開放性,谷歌與開放手機聯(lián)盟合作開發(fā)了 Android,這個聯(lián)盟由包括中國移動、摩托羅拉、高通、宏達和 T-Mobile 在內(nèi)的 30 多家技術(shù)和無線應(yīng)用的領(lǐng)軍企業(yè)組成。 Android 是一個真正意義上的開放性移動設(shè)備綜合平臺。 通過與運營商、設(shè)備制造商、開發(fā)商和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系,來建立標準化、開放式的移動電話軟件平臺,在移動產(chǎn)業(yè)內(nèi)形成一個開放式的生態(tài)系統(tǒng),這樣應(yīng)用之間的通用性和互聯(lián)性將在最大程度上得到保持。,應(yīng)用平等,所有的Android應(yīng)用之間是完全平等的。 所有的應(yīng)用都運行
3、在一個核心的引擎上面,這個核心引擎其實就是一個虛擬機,它提供了一系列用于應(yīng)用和硬件資源間進行通訊的API。 撇開這個核心引擎,Android的所有其他的東西都是”應(yīng)用”。,應(yīng)用平等,應(yīng)用無界限,Android打破了應(yīng)用之間的界限,比如開發(fā)人員可以把Web上的數(shù)據(jù)與本地的聯(lián)系人,日歷,位置信息結(jié)合起來,為用戶創(chuàng)造全新的用戶體驗。,快速方便的開發(fā)應(yīng)用,Android平臺為開發(fā)人員提供了大量的實用庫和工具,開發(fā)人員可以很快速的創(chuàng)建自己的應(yīng)用。例如在別的手機平臺上要進行基于位置的應(yīng)用的開發(fā)是相當?shù)膹?fù)雜的,而Android將Google Map集成了進來,開發(fā)人員通過簡單的幾行代碼就可以實現(xiàn)一個如圖 1
4、 6的一個地圖應(yīng)用,更詳細的介紹可以參見第八章。,Android系統(tǒng)架構(gòu),建立Android 開發(fā)環(huán)境,建立Android 開發(fā)環(huán)境,JDK安裝 Android SDK安裝以及系統(tǒng)設(shè)置 Eclipse安裝以及ADT工具的安裝,第一個Android應(yīng)用,第一個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引入了一個全新的機制-應(yīng)用程序生命周期(Life Cycle)。
5、多數(shù)情況下,一個Android應(yīng)用運行在一個獨立的Linux進程中 應(yīng)用進程的的生命周期(存活時間)不是由進程自己控制,而是由Android系統(tǒng)決定 影響應(yī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:最簡單的就是你可以把Activi
6、ty看成一個User Interface Program,原則上它會提供使用者一個交互式的接口功能,那一個activity只有一個UI嗎?非也,舉例來說:一個email程序,就可能 包含三個activity 郵件列表的activity 顯示郵件內(nèi)容的activity 寫新郵件或回復(fù)郵件的activity 所 有的Activity在系統(tǒng)里由Activity堆棧所管理,當一個新的Activity被執(zhí)行后,它將會被放置到堆棧的最頂端,并且變 成running activity, 而先前的Activity原則上還是會存在于堆棧中,但它此時不會是在前景的情況,除非剛剛那個新的Activity離開。,In
7、tent,Android使用了一個很特別的類別叫Intent, 用來從一個畫面跳到另一個畫面。 Intent是用來描述一個程序想要作些什么事情。 在Intent的數(shù)據(jù)結(jié)構(gòu)里有兩個很重要的部份,一個是動作 (action)及對數(shù)據(jù)產(chǎn)生反應(yīng)(data to act upon)。action主要的內(nèi)容有MAIN(程序的進入點),VIEW,PICK,EDIT等等。data則是用URI的形示來表示。比如:想要查看 一個人的聯(lián)絡(luò)數(shù)據(jù)時,你需要建立一個Intent,它包含了VIEW的動作(action)及指向該人數(shù)據(jù)的URI描述句。,Intent Filter,當Intent要求做某些事情時,IntentF
8、ilter被用來描述這個activity能夠做些什么事情。比如 一個activity要能夠顯示個人聯(lián)絡(luò)數(shù)據(jù),你就必需要在IntentFilter說明你要如何處理個人聯(lián)絡(luò)數(shù)據(jù)并用ACTION_VIEW呈現(xiàn)出來。 IntentFilter都會在AndroidManifest.xml清單里面聲明。,Broadcast Intent Receiver,當你想要寫一個程序來對外部的事件做些處理時,可以使用Broadcast Intent Receiver。比如:當電話響時,有短信時。Broadcast Intent Receiver它并不能拿來顯示UI畫面,它必需利用NotificationManage
9、r來通知使用者他們感興趣的事件發(fā)生了。 Broadcast Intent Receiver同樣的可以在AndroidManifest.xml中聲明,但你也可以用寫 Context.registerReceiver()程序的方式來注冊你自己的Broadcast Intent Receiver。你自己的程序并不會因為BroadcastReceivers被呼叫而被它執(zhí)行起來。而是當BroadcastReceiver被觸發(fā) 時系統(tǒng)會依需求來執(zhí)行相對應(yīng)的程序。程序可以利用Context.sendBroadcast()來發(fā)出他們自己的intent broadcast給其它的程序。,Intent 與 Act
10、ivity,畫面的切來切去則是由resolving intent來實現(xiàn)的。當你想產(chǎn)生新的畫面時,現(xiàn)行的activity就使用startActivity(myIntent)。 系統(tǒng)會根據(jù)所有已安裝的程序所定義的intent filter來看那個程序是最適合myIntent。 當startActivity被呼叫時,resolving Intents的處理過程是伴隨而來的。resolving intent提供我們兩個好處: 讓Activities可以很容易的利用Intent的方式去使用別的程序的功能。 Activities可以很容易的在任何情況下由新Activity所取代。,Activity生命周期
11、,Activity生命周期,使用Bundle在Activity間傳遞數(shù)據(jù) Log與DDMS Activity生命周期,Activity,何謂Activity:最簡單的就是你可以把Activity看成一個User Interface Program,原則上它會提供使用者一個交互式的接口功能,那一個activity只有一個UI嗎?非也,舉例來說:一個email程序,就可能 包含三個activity 郵件列表的activity 顯示郵件內(nèi)容的activity 寫新郵件或回復(fù)郵件的activity 所 有的Activity在系統(tǒng)里由Activity堆棧所管理,當一個新的Activity被執(zhí)行后,它將會
12、被放置到堆棧的最頂端,并且變 成running activity, 而先前的Activity原則上還是會存在于堆棧中,但它此時不會是在前景的情況,除非剛剛那個新的Activity離開。,Activity狀態(tài),當一個Activity在屏幕的最上層時(堆棧的最頂端),它就是屬于active或running的狀態(tài) 如果一個Activity失去焦點(focus)但還看得到它的畫面(比如:一個新的Activity畫面并不是全屏幕或者它是一個半透明的情況),那失去焦點的這個Activity則處在paused的狀態(tài)。像這個失去焦點的Activity它還是完全活著的,并沒有消失。(活著的意思是指,Activi
13、ty自已本身所有的狀態(tài)及數(shù)據(jù)都還是存在的,也跟窗口管理程序window manager保持連系著),像這種paused的activity,會在一種情況下消失,那就是當系統(tǒng)的內(nèi)存不夠用之時,系統(tǒng)會自動判斷,把不重要的 activity移除。,Activity狀態(tài)-cont,如果一個Activity被其它的Activity完全的遮住時,這個被遮的Activity處于stop的狀態(tài),它仍然保有全部的狀態(tài)及數(shù)據(jù),但因為它已不再被使用者看見,所以它的畫面是被隱藏起來的(畫面不需要更新),當系統(tǒng)內(nèi)存不足時,這種stop狀態(tài)的activity是最先被系統(tǒng)考慮拿來釋放內(nèi)存的。,Activity狀態(tài)-cont,
14、當一個Activity處于pause或stop的狀態(tài)時,系統(tǒng)可以要求Activity結(jié)束(finish)或直接移除(kill)它。當它需要再度呈現(xiàn)在使用者面前時,它必需要能完整的重新啟動及回復(fù)先前的狀態(tài),使用Service,使用Service,什么是服務(wù)(service) 如何使用服務(wù) 使用服務(wù)進行音樂播放,Service,服務(wù)是運行在后臺的一段代碼。它可以運行在它自己的進程,也可以運行在其他應(yīng)用程序進程的上下文(context)里面,這取決于自身的需要。其它的組件可以綁定到一個服 務(wù)(Service)上面,通過遠程過程調(diào)用(RPC)來調(diào)用這個方法。例如媒體播放器的服務(wù), 當用戶退出媒體選擇用
15、戶界面,仍然希望音樂依然可以繼續(xù)播放,這時就是由服務(wù) (service)來保證當用戶界面關(guān)閉時音樂繼續(xù)播放的。,如何使用Service,第一種是通過調(diào)用Context.startService()啟動,調(diào)用Context.stopService()結(jié)束,startService()可以傳遞參數(shù)給Service。 第二種方式是通過調(diào)用Context.bindService()啟動,調(diào)用Context.unbindservice()結(jié)束,還可以通過ServiceConnection訪問Service。二者可以混合使用,比如說我可以先startService再bindservice。,Service
16、的生命周期,startService后,即使調(diào)用startService的進程結(jié)束了Service仍然還存在,直到有進程調(diào)用stopService,或者Service自己自殺(stopSelf())就沒法了 bindService后,Service就和調(diào)用bindService的進程同生共死了,也就是說當調(diào)用bindService的進程死了,那么它bind的Service也要跟著被結(jié)束,當然期間也可以調(diào)用unbindservice讓 Service結(jié)束。 兩種方式混合使用時,比如說你startService了,我bindService了,那么只有你stopService了而且我也unbinds
17、ervice了,這個Service才會被結(jié)束。,進程生命周期,Android系統(tǒng)將會嘗試保留那些啟動了的或者是綁定了服務(wù)的進程 如果該服務(wù)正在進程的onCreate(), onStart(), 或者 onDestroy() 這些方法中執(zhí)行時, 那么主進程將會成為一個前臺進程,以確保此代碼不會被停止 如果服務(wù)已經(jīng)開始,那么它的主進程會就重要性而言低于所有可見的進程但高于不可見的進程, 由于只有少數(shù)幾個進程是用戶可見的,所以只要不是內(nèi)存特別低,該服務(wù)不會停止. 如果有多個客戶端綁定了服務(wù), 只要客戶端中的一個對于用戶是可見的,即認為該服務(wù)可見,Content Provider,Content Pr
18、ovider,為什么需要Content Provider 如何使用Content Provider,為什么需要Content Provider,為在 Android 中,每個應(yīng)用程序都是用自己的 user ID 及在自己的 process 中執(zhí)行 當應(yīng)用程序彼此間要分享數(shù)據(jù)時,這樣的架構(gòu)勢必要提供一個好的解決方案才行 為了解決應(yīng)用程序間,彼此要分享數(shù)據(jù)的需求,Android 提供了 Content Provider 這個機制。,使用Content Provider,每一種Content Provider都提供一個唯一公共URI(由ContentURI封裝),它將被客戶端用于從內(nèi)容提供器請求/添加/更新/刪除數(shù)據(jù)。 vider.Contacts.Phones.CONTENT_URI vider.Contacts.Photos.CONTENT_URI and
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 七年級生物下冊 4.6.1 人體對外界環(huán)境的感知教學實錄1 (新版)新人教版
- 辭職申請書集錦15篇
- 植樹節(jié)演講稿范文錦集8篇
- 全國人教版信息技術(shù)八年級下冊第二單元第8課《創(chuàng)建操作按鈕》教學實錄
- 2024秋八年級英語上冊 Unit 2 How often do you exercise Section A(1a-2d)教學實錄 (新版)人教新目標版
- 我的心愛之物作文素材大全10篇
- 2024年度水電設(shè)施安裝與調(diào)試合同屋3篇
- 本科畢業(yè)自我鑒定
- 二年級語文下冊 課文5 17 要是你在野外迷了路教學實錄 新人教版
- 江蘇省興化市高中地理 第二章 城市與城市化 2.2 不同等級城市的服務(wù)功能教學實錄 新人教版必修2
- 全國2016年10月自考00043經(jīng)濟法概論(財經(jīng)類)試題及答案
- 凈化工程施工驗收報告正規(guī)版
- 基于改進蟻群算法的移動機器人路徑規(guī)劃研究共3篇
- 侵蝕溝分級分類-征求意見稿
- 市場主體住所(經(jīng)營場所)申報承諾書
- 房地產(chǎn) -建筑安裝工程工期定額文件(2023版)
- GJB《質(zhì)量分析報告》模板
- GB/T 27030-2006合格評定第三方符合性標志的通用要求
- GB/T 17271-1998集裝箱運輸術(shù)語
- GB/T 13738.1-2008紅茶第1部分:紅碎茶
- 2023年南京農(nóng)業(yè)大學博士研究生入學考試英語試題
評論
0/150
提交評論