版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Android體系結(jié)構(gòu)和基本組件,嵌入式系統(tǒng)開發(fā)與設(shè)計(jì),Android體系結(jié)構(gòu),Android系統(tǒng)架構(gòu),3,Android分層結(jié)構(gòu),Android系統(tǒng)使用了軟件棧(Software Stack)來構(gòu)建Android分層結(jié)構(gòu) 從上到下依次為 應(yīng)用程序?qū)?應(yīng)用程序框架層 核心類庫(kù) Linux內(nèi)核,4,應(yīng)用程序?qū)?Android應(yīng)用程序?qū)蛹闪撕诵膽?yīng)用程序,包括 email客戶端 SMS短消息程序 Google日歷 Google地圖 瀏覽器 聯(lián)系人管理程序 上述程序在Android系統(tǒng)發(fā)布時(shí)作為核心程序打包發(fā)布 Android應(yīng)用程序由Java語(yǔ)言編寫,5,應(yīng)用程序框架層,該層為開發(fā)者提供API框架
2、 提供了用來創(chuàng)建Android程序的類 簡(jiǎn)化Android組件的重用方式 通過該層的軟件規(guī)范,可以進(jìn)行功能的擴(kuò)展 可以在規(guī)定的安全限制之下進(jìn)行程序之間的共享,6,應(yīng)用程序框架層(2),核心的應(yīng)用程序服務(wù) 活動(dòng)管理器(Activity Manager)管理應(yīng)用程序生命周期及Activity棧 視圖(Views)用來創(chuàng)建程序的用戶界面,包括列表、網(wǎng)格、文本框等 通知管理器(Notification Manager )用來在狀態(tài)欄顯示應(yīng)用程序給用戶的通知 內(nèi)容管理器(Content Providers)使得應(yīng)用程序之間可以進(jìn)行數(shù)據(jù)共享 資源管理器(Resource Manager)提供對(duì)字符串和圖像
3、等非代碼資源的訪問,7,核心類庫(kù),Android包含了C/C+庫(kù) 被Android系統(tǒng)中不同的組件所使用 通過應(yīng)用程序框架為開發(fā)者提供服務(wù),8,庫(kù)(Libraries),庫(kù)(Libraries) 系統(tǒng)C庫(kù) 繼承自BSD的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫(kù) 為基于Linux的嵌入式系統(tǒng)進(jìn)行了定制和優(yōu)化,9,庫(kù)(Libraries)(2),媒體庫(kù) 基于Packet Video OpenCore,第三方庫(kù) 支持多種常用音視頻編解碼 Mpeg4,H.264,MP3等 支持靜態(tài)圖像文件 JPG,PNG等 Surface Manager 管理顯示子系統(tǒng) 為多個(gè)應(yīng)用程序提供2D和3D圖層無縫融合 LibWebCore Web
4、瀏覽器引擎 用來支持Android瀏覽器和可嵌入的Web視圖,10,庫(kù)(Libraries)(3),SGL 2D圖形引擎的核心庫(kù) SQLite 輕量級(jí)關(guān)系數(shù)據(jù)庫(kù)引擎 所有程序可用 FreeType 用來支持位圖和矢量字體渲染 SSL 用來支持安全套接字層(SSL)加密協(xié)議的安全I(xiàn)nternet通信 3D Libraries OpenGL的嵌入式版本OpenGL ES 可使用硬件3D加速或者軟件3D加速,11,運(yùn)行時(shí)(Run-time),Android Run-Time包括兩個(gè)部分 核心庫(kù) Dalvik虛擬機(jī) 核心庫(kù) 提供JAVA 編程語(yǔ)言核心庫(kù)的大多數(shù)功能 Dalvik虛擬機(jī) Google為A
5、ndroid設(shè)計(jì)的Java虛擬機(jī),12,運(yùn)行時(shí)(Run-time)(2),Dalvik虛擬機(jī) Android程序運(yùn)行于Dalvik虛擬機(jī)之上 設(shè)計(jì)與Java虛擬機(jī)不同 Dalvik虛擬機(jī)運(yùn)行的是Dex專有文件格式,JVM運(yùn)行Java字節(jié)碼 Dalvik是基于寄存器進(jìn)行設(shè)計(jì),JVM是基于棧 Android程序與虛擬機(jī)的關(guān)系 每個(gè)Android程序都有自己的進(jìn)程,擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例 Dalvik虛擬機(jī)被設(shè)計(jì)成為一個(gè)設(shè)備,可以高效的同時(shí)運(yùn)行多個(gè)虛擬系統(tǒng) Android程序通過編譯后還需要通過dx工具轉(zhuǎn)換為.dex文件 Dalvik虛擬機(jī)執(zhí)行.dex文件,13,運(yùn)行時(shí)(Run-tim
6、e)(3),Dalvik虛擬機(jī)的特征 專有文件格式.dex 通過dex將應(yīng)用中所定義的許多類生成的class文件整合到一個(gè)文件中,減少了冗余信息,文件大小和I/O操作數(shù)量,提高類的查找速度 增加對(duì)新操作碼的支持 文件結(jié)構(gòu)簡(jiǎn)潔,使用等長(zhǎng)指令,執(zhí)行效率高 擴(kuò)大了只讀結(jié)構(gòu)大小,利于程序間數(shù)據(jù)共享 針對(duì).dex的優(yōu)化 針對(duì)小內(nèi)存進(jìn)行了優(yōu)化 基于寄存器 提高了代碼執(zhí)行效率,代價(jià)是在硬件和通用性上的降低 應(yīng)用/進(jìn)程/虛擬機(jī)的對(duì)應(yīng) 實(shí)現(xiàn)進(jìn)程之間的隔離,保護(hù)程序安全 Dalvik虛擬機(jī)依賴操作系統(tǒng)底層 線程調(diào)度和管理,內(nèi)存分配和管理,互斥等,14,Linux內(nèi)核,Android的操作系統(tǒng)核心 Android
7、4.0之前的Linux內(nèi)核是基于Linux 2.6 Android 4.0、4.1和4.2是基于Linux 3.0 但不是完全的Linux,不包含全部的Linux 系統(tǒng)初始化和編程接口和標(biāo)準(zhǔn)的Linux 系統(tǒng)是有所不同的 Android的操作系統(tǒng)核心服務(wù) 可以看做是硬件層和系統(tǒng)(軟件)上層的抽象層 安全性,內(nèi)存管理,進(jìn)程管理, 網(wǎng)絡(luò)協(xié)議棧,電源管理和驅(qū)動(dòng),15,Linux內(nèi)核(2),顯示驅(qū)動(dòng)(Display Driver) 基于Linux的幀緩沖(Frame Buffer)驅(qū)動(dòng) 照相機(jī)驅(qū)動(dòng)(Camera Driver) 基于Linux的Video for Linux驅(qū)動(dòng) 藍(lán)牙驅(qū)動(dòng)(Blueto
8、oth Driver) 基于藍(lán)牙(IEEE 802.15.1標(biāo)準(zhǔn))的無線傳輸技術(shù) Flash存儲(chǔ)驅(qū)動(dòng)(Flash Memory Driver) 基于MTD的Flash驅(qū)動(dòng)程序 Binder IPC驅(qū)動(dòng) Android的特殊驅(qū)動(dòng)程序,具有單獨(dú)的設(shè)備節(jié)點(diǎn),提供進(jìn)程間通信的功能,16,Linux內(nèi)核(3),USB驅(qū)動(dòng)(USB Driver) 為移動(dòng)智能終端的USB接口提供驅(qū)動(dòng) 鍵盤驅(qū)動(dòng)(KeyBoard Driver) 作為輸入設(shè)備的鍵盤驅(qū)動(dòng) WiFi驅(qū)動(dòng) 基于IEEE 802.11標(biāo)準(zhǔn)的驅(qū)動(dòng)程序 音頻驅(qū)動(dòng)(Audio Driver) 基于ALSA(Advanced Linux Sound Arch
9、itecture)的高級(jí)Linux聲音體系驅(qū)動(dòng) Power Management(電源管理) 電池電量等,17,Android進(jìn)程與線程,進(jìn)程和線程,進(jìn)程 具有獨(dú)立功能的程序在操作系統(tǒng)中的運(yùn)行活動(dòng) 資源分配和調(diào)度的獨(dú)立單位 線程 進(jìn)程中的獨(dú)立實(shí)體 CPU進(jìn)行調(diào)度的基本單位 不擁有系統(tǒng)資源,擁有運(yùn)行使用資源 進(jìn)程與線程的映射 一對(duì)一 一對(duì)多 多對(duì)多,19,Android進(jìn)程,Android的基礎(chǔ)操作系統(tǒng) 在Android的操作系統(tǒng)層是Linux 使用Linux進(jìn)程 Android進(jìn)程 系統(tǒng)會(huì)為Andorid程序分配Linux用戶ID 每個(gè)進(jìn)程會(huì)有相應(yīng)的權(quán)限,實(shí)現(xiàn)進(jìn)程之間的安全 用戶進(jìn)程的創(chuàng)建 如
10、應(yīng)用程序組件是第一次啟動(dòng)且無其他組件運(yùn)行,Android系統(tǒng)為應(yīng)用程序創(chuàng)建單線程的Linux進(jìn)程 默認(rèn)同一應(yīng)用程序的所有組件運(yùn)行在同一個(gè)進(jìn)程和線程里 稱為main主線程 如進(jìn)程已存在,則組件運(yùn)行在已有進(jìn)程或線程中;或者創(chuàng)建額外的線程中;或者指定組件運(yùn)行在其他進(jìn)程中,20,Android進(jìn)程(2),Android進(jìn)程的控制 在manifest文件中來設(shè)置組件所在的進(jìn)程 組件可以運(yùn)行在自己所在程序的進(jìn)程中或者與某些組件共享進(jìn)程 進(jìn)程的終止 當(dāng)內(nèi)存不足或活動(dòng)進(jìn)程需要內(nèi)存時(shí),Android系統(tǒng)會(huì)根據(jù)內(nèi)存使用情況終止其他進(jìn)程 被終止進(jìn)程會(huì)在需要時(shí)重新啟動(dòng),21,Android進(jìn)程(3),Android進(jìn)
11、程的生命周期 Android系統(tǒng)盡可能維持進(jìn)程在內(nèi)存中的存在 移動(dòng)智能終端的內(nèi)存受限,在必要時(shí)系統(tǒng)會(huì)終止舊進(jìn)程來提供內(nèi)存空間 根據(jù)進(jìn)程的重要性來選擇哪些進(jìn)程會(huì)被先終止 重要性小的先被終止 Android進(jìn)程的重要性等級(jí)劃分 前臺(tái)進(jìn)程 可見進(jìn)程 服務(wù)進(jìn)程 后臺(tái)進(jìn)程 空進(jìn)程,22,Android進(jìn)程(4),前臺(tái)進(jìn)程 正在執(zhí)行的程序的進(jìn)程,包括 進(jìn)程的一個(gè)activity正在與用戶交互 進(jìn)程擁有一個(gè)綁定在正在與用戶交互的activity上的service 進(jìn)程擁有一個(gè)前臺(tái)運(yùn)行的Service 進(jìn)程擁有一個(gè)正在執(zhí)行生命周期中onCreate(), onStart()或onDestory()方法的Ser
12、vice 進(jìn)程擁有一個(gè)正在執(zhí)行onReceive()方法的BroadcastReceiver 前臺(tái)進(jìn)程通常不多 當(dāng)內(nèi)存太小以至于不能容納所有的可能前臺(tái)進(jìn)程時(shí),一些前臺(tái)進(jìn)程就會(huì)被終止,23,Android進(jìn)程(5),可見進(jìn)程 不擁有運(yùn)行于前臺(tái)的組件,包括 擁有不在前臺(tái)但可見的activity 前臺(tái)activity啟動(dòng)對(duì)話框時(shí) 服務(wù)進(jìn)程 進(jìn)程擁有綁定到可見activity的Service 進(jìn)程運(yùn)行了被startService()啟動(dòng)的Service 后臺(tái)進(jìn)程 進(jìn)程擁有不可見的activity 空進(jìn)程 進(jìn)程,不擁有任何active的組件,24,Android進(jìn)程(6),Android根據(jù)進(jìn)程中當(dāng)前a
13、ctive組件的重要性,來安排其進(jìn)程級(jí)別 例如,如果一個(gè)進(jìn)程擁有一個(gè)service和一個(gè)可見的activity,進(jìn)程會(huì)被定為可見進(jìn)程,而不是服務(wù)進(jìn)程。 被其它進(jìn)程所依賴的進(jìn)程,其級(jí)別可能會(huì)被提高 擁有service的進(jìn)程比擁有后臺(tái)activity的進(jìn)程級(jí)別高 當(dāng)一個(gè)activity啟動(dòng)一個(gè)需長(zhǎng)時(shí)間執(zhí)行的操作時(shí),啟動(dòng)Service比創(chuàng)建一個(gè)線程效率高 使用service能保證操作至少有“service進(jìn)程”的優(yōu)先級(jí),25,Android進(jìn)程(7),進(jìn)程間通訊 使用遠(yuǎn)程過程調(diào)用(remote procedure call,RPC)提供的進(jìn)程間通信(IPC)機(jī)制 被activity或其他應(yīng)用程序組件
14、調(diào)用的方法將(在其他進(jìn)程中)被遠(yuǎn)程執(zhí)行,而所有的結(jié)果將被返回給調(diào)用者 要求把方法調(diào)用及其數(shù)據(jù)分解到操作系統(tǒng)可以理解的程度,并將其從本地的進(jìn)程和地址空間傳輸至遠(yuǎn)程的進(jìn)程和地址空間,然后在遠(yuǎn)程進(jìn)程中重新組裝并執(zhí)行這個(gè)調(diào)用。執(zhí)行后的返回值將被反向傳輸回來 Android提供了執(zhí)行IPC事務(wù)所需的全部代碼 需要關(guān)注定義和實(shí)現(xiàn)RPC編程接口上即可,26,Android線程,Android UI線程 應(yīng)用程序啟動(dòng)時(shí),系統(tǒng)為之創(chuàng)建“main”主線程,有時(shí)也稱為UI線程 負(fù)責(zé)將事件分發(fā)給相應(yīng)用戶界面的widget 負(fù)責(zé)應(yīng)用程序與Android UI組件包之間的交互 不是每個(gè)組件的實(shí)例都擁有單獨(dú)的線程 UI線程
15、中實(shí)例化同一個(gè)進(jìn)程中的所有組件 UI線程分發(fā)對(duì)每個(gè)組件的系統(tǒng)調(diào)用 對(duì)系統(tǒng)回調(diào)進(jìn)行響應(yīng)的方法總是運(yùn)行在UI線程 Android UI線程的要點(diǎn) 不要讓UI線程做每一件事情 UI線程的阻塞超過一定時(shí)間(大約5s),會(huì)引起ANR“應(yīng)用程序沒有響應(yīng)”對(duì)話框 單線程模式下不要阻塞UI線程,也不要在UI線程之外訪問UI組件包,27,Android線程(2),工作線程 為保證程序的響應(yīng)能力,創(chuàng)建單獨(dú)的線程來完成耗時(shí)的操作 注意:工作線程不能訪問UI組件包 否則可能導(dǎo)致不明確、不可預(yù)見的后果,并且難以跟蹤 需確保工作線程完成工作,UI線程進(jìn)行UI操作 通過使用不同的方法可以達(dá)到 代碼復(fù)雜程度增加了 為確保代碼
16、不會(huì)變的特別復(fù)雜并且難以維護(hù),對(duì)于復(fù)雜操作可以采用異步任務(wù)來完成 異步任務(wù) 允許以異步方式來操作用戶界面 異步任務(wù)首先阻塞工作線程,然后在UI線程中進(jìn)行結(jié)果的顯示 不需要人工干預(yù),28,Android SDK,Android SDK,Android SDK提供開發(fā)Android應(yīng)用程序所使用的開發(fā)組件 Windows/Linux/Mac平臺(tái)上均有對(duì)應(yīng)SDK 包含了Android平臺(tái)上的工具集 以Java語(yǔ)言為基礎(chǔ) Android SDK提供的主要功能 訪問攝像頭和GPS等硬件 自帶的Google地圖和LBS服務(wù) 后臺(tái)服務(wù) SQLite數(shù)據(jù)庫(kù) 數(shù)據(jù)共享和應(yīng)用程序通信 圖形支持 優(yōu)化的內(nèi)存和進(jìn)程管
17、理 ,30,Android SDK所支持的操作系統(tǒng): Windows XP (32-bit) or Vista (32- or 64-bit) Mac OS X 10.4.8 or later (x86 only) Linux,31,Android SDK目錄,在安裝Android SDK的android-sdk-windows目錄中,32,Android SDK目錄(2),add-ons 保存附加庫(kù) 例如Google Maps Docs Android SDK API參考文檔 可以對(duì)API進(jìn)行查閱 Extras 擴(kuò)展插件 提供向下兼容的功能,33,Android SDK目錄(3),Platf
18、orms 每個(gè)平臺(tái)的SDK真正的文件 根據(jù)API Level劃分的SDK版本 最新的android-17文件夾,進(jìn)入后是Android 4.2 SDK的主要文件 data保存著一些系統(tǒng)資源 skins是Android模擬器的皮膚 templates是工程創(chuàng)建的默認(rèn)模板 android.jar是該版本的主要framework文件 較早版本還包括了 ant為ant編譯腳本 images是模擬器映像文件 tools目錄里面包含了重要的編譯工具,比如aapt、aidl、逆向調(diào)試工具dexdump和編譯腳本dx,34,Android SDK目錄(4),platform-tools 保存著一些通用工具 比
19、如adb、和aapt、aidl、dx等文件,Android123提示 這里和platforms目錄中tools文件夾有些重復(fù)(主要指較低版本) 從android 2.3開始這些工具被劃分為通用 主要工具 adb工具:Android Debug Bridge,通用調(diào)試工具,可以管理設(shè)備、手機(jī)模擬器的狀態(tài) aapt工具:Android Asset Packaging Tool , 可以查看, 創(chuàng)建, 更新ZIP格式的文檔附件(zip, jar, apk),也可將資源文件編譯成二進(jìn)制文件 aidl工具:Android Interface Definition Language,即Android接口描
20、述語(yǔ)言 dx工具:Android SDK的編譯器。當(dāng)運(yùn)行Java文件,dx.exe將創(chuàng)建一個(gè)帶有.dex后綴Dalvik可執(zhí)行格式的文件,35,Android SDK目錄(5),Samples Android SDK自帶的默認(rèn)示例工程 包括了較為全面的Android程序設(shè)計(jì)內(nèi)容 system-images 針對(duì)不同處理器的system images Tools 包含了重要的工具 ddms用于啟動(dòng)Android調(diào)試工具 屏幕截圖和文件管理器 draw9patch是繪制android平臺(tái)的可縮放png圖片的工具 sqlite3可以在PC上操作SQLite數(shù)據(jù)庫(kù) Monkeyrunner是壓力測(cè)試應(yīng)
21、用,模擬用戶隨機(jī)按鍵 mksdcard是模擬器SD映像的創(chuàng)建工具 emulator是android模擬器主程序 traceview作為android平臺(tái)上重要的調(diào)試工具,36,Android SDK目錄(6),android.jar 標(biāo)準(zhǔn)壓縮包 包含了編譯后的class文件 包含了全部的API,37,Android SDK目錄(7),學(xué)習(xí)Android開發(fā)需要了解Android SDK 通過SDK幫助文檔,38,Android SDK目錄(8),SDK文檔的閱讀需要循序漸進(jìn) 了解Android 了解其開發(fā)工具鏈 了解環(huán)境搭建 熟悉API并進(jìn)行聯(lián)系,39,Android SDK目錄(9),通過S
22、DK文檔來深入了解Android開發(fā) SDK文檔中提供了相應(yīng)的支持,40,Android SDK目錄(10),根據(jù)需要來進(jìn)行了解,41,Android SDK提供的實(shí)例,Android SDK的Samples提供了豐富的實(shí)例,42,Android SDK提供的實(shí)例(2),SkeletonApp 演示如何使用Android SDK提供的視圖組件 如EditText、Button、ImageView和菜單等 ApiDemos 演示了許多Android API,包括了app、content、graphic和media等 通過該示例來了解Android API NotePad 記事本程序 演示了文本的
23、新建、編輯和刪除等操作 LunarLander 演示了一個(gè)登陸月球的小游戲 主要涉及到動(dòng)畫、鍵盤快捷鍵、線程的實(shí)現(xiàn)等,43,Android SDK提供的實(shí)例(3),Home 演示主題類軟件,實(shí)現(xiàn)一套新的主題界面并注冊(cè)到系統(tǒng)主題當(dāng)中 如何開發(fā)主題類應(yīng)用 SoftKeyBoard 演示軟鍵盤與輸入框事件的綁定,自動(dòng)顯示軟鍵盤 如何使用軟鍵盤 Snake 貪吃蛇 自定義視圖組件的實(shí)現(xiàn)和控制,游戲的設(shè)計(jì)開發(fā) JetBoy 具備聲音支持的游戲?qū)嵗?演示多媒體支持下的游戲設(shè)計(jì)開發(fā),44,Android核心開發(fā)包,android.util 包含一些底層輔助類, 例如特定的容器類,XML輔助工具類等 andr
24、oid.os 提供基本的操作服務(wù),消息傳遞和進(jìn)程間通信IPC android.grpics 作為核心渲染包,提供圖形渲染功能 android.text/android.text.method/android.text.style/android.text.util 提供一套豐富的文本處理工具,支持富文本,輸入模式,45,Android核心開發(fā)包(2),android.database 包含底層API處理數(shù)據(jù)庫(kù),方便操作數(shù)據(jù)庫(kù)表和數(shù)據(jù) android.content 提供各種服務(wù)訪問數(shù)據(jù)在手機(jī)設(shè)備上,程序安裝到手機(jī)設(shè)備和其他相關(guān)資源,以及內(nèi)容提供展示動(dòng)態(tài)數(shù)據(jù) android.view 核心用戶界
25、面框架 android.widget 提供標(biāo)準(zhǔn)用戶界面元素,lists(列表) ,buttons(按鈕),layout managers(布局管理器)等,是組成我們界面的基本元素,46,Android核心開發(fā)包(3),android.app 提供高層應(yīng)用程序模型,實(shí)現(xiàn)使用Activity vider 提供方便調(diào)用系統(tǒng)提供的content providers的接口 android.telepony 提供API交互和手機(jī)設(shè)備的通話接口 android.webikit 包含一系列工作在基于Web內(nèi)容的API,47,Android 基本組件,Android基本組件,Android
26、應(yīng)用程序由以下部分構(gòu)成 Activity BroadcastReceiver Service Content Provider Intent/Intent Filter 不是每個(gè)程序都需要上述所有組件 對(duì)上述組件進(jìn)行組合來進(jìn)行應(yīng)用程序的編寫 通過AndroidManifest.xml來實(shí)現(xiàn)具體的組件組合,49,Activity,最基本的Android模塊之一 提供使用者一個(gè)交互式的接口功能 可以看做是應(yīng)用中的一個(gè)單獨(dú)屏幕 每個(gè)Activity被實(shí)現(xiàn)為一個(gè)繼承于Activity基類的單獨(dú)的類 Android應(yīng)用程序中的Activity 一般Android應(yīng)用程序中都有多個(gè)Activity Act
27、ivity之間互相跳轉(zhuǎn) 例如通過button,50,Activity(2),Activity的管理 所有的Activity在系統(tǒng)中的Activity棧中管理 新的Activity執(zhí)行后被放置到棧的頂部,狀態(tài)轉(zhuǎn)變?yōu)閞unning Activity 先前的Activity仍然在棧中,但不在前臺(tái) Activity生命周期 Active/running Paused Stop Finish/kill,51,Service,Service 服務(wù) 運(yùn)行在后臺(tái)的一段代碼 長(zhǎng)期存活,運(yùn)行在自己的進(jìn)程或者其他程序的的上下文中 取決于自身的需要 運(yùn)行時(shí)不具有UI編碼 與其他組件的關(guān)系 其他組件可以綁定到一個(gè)Ser
28、vice 通過遠(yuǎn)程調(diào)用RPC來調(diào)用,52,Service(2),Service的生命周期 通過其他應(yīng)用程序組件啟動(dòng)、終止和控制 包括其他service、activity和broadcastreceiver 適合于需要定期或者持續(xù)執(zhí)行不與用戶交互的操作 啟動(dòng)的Service具有比非active狀態(tài)的Activity更高的優(yōu)先級(jí) 防止被意外的終止 當(dāng)Service占用了必需資源時(shí),會(huì)被終止;在資源可用時(shí),Service會(huì)被自動(dòng)重啟 應(yīng)用程序可以作為服務(wù) 需要定時(shí)更新,但用戶交互少,53,Intent/Intent Filter,Intent 意圖 一種消息傳遞機(jī)制,定義為對(duì)要進(jìn)行的操作的抽象描述
29、與特定的數(shù)據(jù)一起聲明執(zhí)行某個(gè)動(dòng)作的意圖 可以進(jìn)行屏幕之間的切換,描述了應(yīng)用程序想要做什么 Intent的構(gòu)成 動(dòng)作或者說需要進(jìn)行的動(dòng)作 動(dòng)作對(duì)應(yīng)的數(shù)據(jù),54,Intent/Intent Filter(2),Intent在Android應(yīng)用程序中的作用 啟動(dòng)Activity 啟動(dòng)特定的Activity 啟動(dòng)未指明的Activity 處理Activity的返回值 支持Android系統(tǒng)中任意兩個(gè)應(yīng)用程序組件之間的交互 在系統(tǒng)范圍內(nèi)廣播消息 任何應(yīng)用程序都可以注冊(cè)廣播接收器來監(jiān)聽和響應(yīng)廣播的Intent,從而能夠事件來創(chuàng)建事件驅(qū)動(dòng)的應(yīng)用程序 廣播公布系統(tǒng)事件 Intent啟動(dòng)Activity的方式
30、顯示:通過指定要加載的類 隱式:通過請(qǐng)求對(duì)一組數(shù)據(jù)執(zhí)行某個(gè)動(dòng)作,55,Intent/Intent Filter(3),Intent Filter 用來注冊(cè)Activity、Service和Broadcast Receiver并對(duì)一個(gè)動(dòng)作或一類特定數(shù)據(jù)進(jìn)行處理 告訴Android系統(tǒng)如何找到合適的處理程序 Intent Filter的使用方法 使用標(biāo)簽及其屬性來指定一個(gè)組件所支持的動(dòng)作、分類和數(shù)據(jù) 可以使用Intent Filter作為插件和擴(kuò)展 Android系統(tǒng)對(duì)Intent Filter進(jìn)行解析 隱式的Intent被解析為一個(gè)單一的活動(dòng) 如果有多個(gè)活動(dòng)可以完成對(duì)指定數(shù)據(jù)的動(dòng)作,那么啟動(dòng)最合適的活動(dòng),56,Broadcast Receiver,Intent廣播(Broadcast)事件 Intent可以用作不同進(jìn)程間傳遞數(shù)據(jù)和事件的媒介 由應(yīng)用程序或者Android系統(tǒng)本身來廣播一些事件的到來 監(jiān)聽(通過注冊(cè)Broadcast Receiver)并可以獲取Intent中的數(shù)據(jù) Broadcast Receiver Broadcast Inten
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026四川成都市青羊區(qū)婦幼保健院招聘2人備考題庫(kù)有完整答案詳解
- 2026云南弘玉滇中人力資源產(chǎn)業(yè)園運(yùn)營(yíng)管理有限公司就業(yè)見習(xí)崗位招募2人備考題庫(kù)(含答案詳解)
- 2026年環(huán)境科學(xué)與治理專業(yè)試題集及答案解析
- 2026年河北邯鄲成安縣直學(xué)前教育集團(tuán)公開招用教育服務(wù)人員備考題庫(kù)及答案詳解(考點(diǎn)梳理)
- 2026上海愛樂樂團(tuán)招聘5人備考題庫(kù)及參考答案詳解一套
- 2026廣西玉林市皮膚病醫(yī)院編外人員招聘3人備考題庫(kù)及一套答案詳解
- 2026年中國(guó)地質(zhì)調(diào)查局局屬單位公開招聘714人(第一批)備考考試試題及答案解析
- 2026廣東佛山市順德區(qū)龍江鎮(zhèn)華東小學(xué)語(yǔ)文、數(shù)學(xué)、英語(yǔ)臨聘教師招聘?jìng)淇伎荚囶}庫(kù)及答案解析
- 2026河南洛陽(yáng)西工區(qū)中國(guó)中化黎明化工研究設(shè)計(jì)院校園招聘考試參考試題及答案解析
- 2026廣東佛山市均安控股集團(tuán)有限公司及下屬企業(yè)管理人員招聘2人備考考試試題及答案解析
- 定額〔2025〕1號(hào)文-關(guān)于發(fā)布2018版電力建設(shè)工程概預(yù)算定額2024年度價(jià)格水平調(diào)整的通知
- 2024年山東省濟(jì)南市3月高三模擬考試生物試題(解析版)
- 教科版九年級(jí)物理上冊(cè)期末測(cè)試卷(1套)
- 高一上學(xué)期期末考試英語(yǔ)試卷及答案兩套(附聽力錄音稿)
- 內(nèi)蒙古自治區(qū)通遼市霍林郭勒市2024屆中考語(yǔ)文最后一模試卷含解析
- 復(fù)方蒲公英注射液的藥代動(dòng)力學(xué)研究
- 溝通技巧與情商提升
- 2024屆新疆維吾爾自治區(qū)烏魯木齊市高三上學(xué)期第一次質(zhì)量監(jiān)測(cè)生物試題【含答案解析】
- 公司基層黨建問題清單
- 福州港羅源灣港區(qū)碧里作業(yè)區(qū)4號(hào)泊位擴(kuò)能改造工程環(huán)境影響報(bào)告
- 變配電室送電施工方案
評(píng)論
0/150
提交評(píng)論