版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章
Android系統概述CONTENTS目錄02
什么是Android01
智能手機03
Android系統架構04
Android16新特性介紹智能手機011.1.1什么是智能手機什么是智能手機智能手機的起源最早可追溯至1973年摩托羅拉DynaTAC原型機的誕生,人們普遍以2007年蘋果iPhone3G的發布作為現代智能手機的普及開端,隨著這些年來智能手機的飛速發展,智能手機的內涵也在不斷深入,本書認為現如今的智能手機應該融合最新的操作系統、計算機網絡、大數據與云計算,以及人工智能等相關技術前沿?;谏鲜鼋o出智能手機的描述,智能手機(SmartPhone)是指搭載開放操作系統(如Android、iOS等),具備類似于計算機的架構體系,支持用戶自主安裝相關的應用程序,通過4G/5G甚至6G移動網絡以及Wi-Fi7等實現高速互聯網接入,并具備融合AI計算能力的移動終端設備的總稱。智能手機與功能手機(FeaturePhone)的核心區別(1)系統開放性:以最新的Android16等現代操作系統為代表,支持深度定制和模塊化擴展,相比早期JavaMIDP應用,現代應用商店(如GooglePlay)提供超過500萬款優化應用(2)智能特性:集成NPU神經處理單元,支持實時AI語音助手(如GoogleGemini)、場景感知等智能功能(3)網絡能力:支持Sub-6GHz/mmWave5G、Wi-Fi7(802.11be)、藍牙5.3等新一代連接技術智能手機:1.1.1什么是智能手機
智能手機六大核心特征(1)智能計算平臺:搭載7nm以下制程處理器,集成AI加速引擎,算力可達10+TOPS(2)全場景連接:支持5GSA/NSA、衛星通信(部分機型)、多頻段Wi-Fi7(3)開放生態:兼容APK/XAPK等安裝包格式,支持模塊化功能擴展(4)智能交互:具備屏下攝像頭、超聲波指紋、眼動追蹤等生物識別技術(5)融合體驗:通過Android16的跨設備協同功能,實現與PC/汽車/IoT設備無縫連接(6)安全架構:基于TrustZone2.0和隱私計算芯片的硬件級安全防護
現代智能手機已發展為集通信、計算、感知于一體的智能終端,其擴展性和功能性遠超傳統功能手機封閉系統(如KaiOS等)的局限,并且較若干年之前的智能手機相比其采用的相關技術也有了質的飛躍。智能手機:1.1.2智能手機操作系統
智能手機是一種在手機內安裝了相應開放式操作系統的手機,隨著通信技術的發展,尤其是第五代(5G)、第六代(6G)移動通信技術的逐步成熟,市場上對功能更強、擴展性能更好的智能手機的需求量增長迅猛。具備獨立的操作系統是智能手機最重要的特征,智能手機操作系統是一種運算能力及功能比傳統功能手機系統更強的手機系統。智能手機操作系統領域也是各手機大廠商爭奪的焦點。
為了讓讀者能夠對智能手機操作系統有一個全面的了解,本書將分塊內容介紹智能手機操作系統,第一塊內容包括SymbianOS、WindowsPhone、PalmOS、BlackBerryOS等4類智能手機操作系統,該四類智能系統在智能手機發展的初期和中期占據了相當一部分市場地位,然而隨著市場競爭的日益激烈,該四類操作系統已經逐漸被淘汰;第二塊內容包括Android、iOS以及HarmonyOS,該三種智能手機操作系統為目前的市場主流,尤其是以HarmonyOS為代表的系統標志了國產系統的飛速發展。如下將詳細介紹該7類智能手機操作系統。1.SymbianOS
塞班操作系統(SymbianOS)最初是由Symbian公司(諾基亞、索尼愛立信、摩托羅拉、西門子等幾家大型移動通信設備商共同出資組建的一個合資公司,專門研發手機操作系統)開發的,其前身是Psion公司推出的EPOC(ElectronicPieceofCheese)操作系統,是專門用于智能手機和移動設備的32位搶占式、多任務操作系統。其內核與GUI(GraphicalUserInterface,又稱圖形用戶接口)分開,功耗低、占用內存少。
Symbian操作系統在智能移動終端上擁有強大的應用程序以及通信能力,這都要歸功于它有一個非常健全的、核心強大的對象導向系統、企業用標準通信傳輸協議以及完美的SunJava語言。Symbian認為無線通信裝置除了要提供聲音溝通的功能外,同時也應具有其他種類的溝通方式,如觸筆、鍵盤等。在硬件設計上,它可以提供許多不同風格的外形。例如,提供真實或虛擬的鍵盤,在軟件功能上可以容納許多功能,包括和他人分享信息、瀏覽網頁、發送、接收電子郵件、傳真以及個人生活行程管理等。此外,Symbian操作系統在擴展性方面為制造商預留了多種接口,而且EPOC操作系統還可以細分成三種類型:Pearl、Quartz、Crystal,分別對應普通手機、智能手機和HandHeldPC場合的應用。
塞班操作系統為第三方開發商提供一個標準和開放的平臺環境。使得第三方應用程序的設計者能夠基于該平臺開發自己的應用軟件。這種方式帶來的不足之處是:由于第三方廠商的用戶接口程序是不同的,造成了軟件不能通用,擴展性較差。這使得塞班操作系統在辦公軟件和多媒體錄放軟件上沒有開發出足夠多的軟件供用戶使用。
多年來Symbian系統一直占據智能系統的市場霸主地位,系統能力和易用性方面均很出色,但是在Android系統出現后,Symbian系統的市場占有率急劇下降。2.WindowsPhone
WindowsPhone最早叫WindowsMobile(簡稱WM)是微軟針對移動設備而開發的操作系統。該操作系統的設計初衷是盡量接近于桌面版本的Windows,微軟按照電腦操作系統的模式來設計WM,應用軟件以MicrosoftWin32API為基礎。2010年10月WindowsPhone操作系統正式發布后,WindowsMobile系列正式退出手機系統市場。
微軟公司正式發布了智能手機操作系統WindowsPhone,同時將谷歌的Android和蘋果的iOS列為主要競爭對手。2011年2月,諾基亞與微軟達成全球戰略同盟并深度合作共同研發。2012年3月21日,WindowsPhone7.5登陸中國。6月21日,微軟正式發布最新手機操作系統WindowsPhone8,WindowsPhone8采用和Windows8相同的內核。
WindowsPhone具有桌面定制、圖標拖曳、滑動控制等一系列前衛的操作體驗。其主屏幕通過提供類似儀表盤的體驗來顯示新的電子郵件、短信、未接來電、日歷約會等,讓人們對重要信息保持時刻更新。它還包括一個增強的觸摸屏界面,更方便手指操作,以及一個最新版本的IEMobile瀏覽器,該瀏覽器在一項由微軟贊助的第三方調查研究中,和參與調研的其他手機瀏覽器相比,可以執行指定任務的比例超過高達48%。很容易看出微軟在用戶操作體驗上所做出的努力,而史蒂夫-鮑爾默也表示:“全新的Windows手機把網絡、個人電腦和手機的優勢集于一身,讓人們可以隨時隨地享受到想要的體驗?!?.PalmOSPalmOS是Palm公司開發的專用于PDA上的一種操作系統,這是PDA上的霸主,一度占據了90%的PDA市場的份額。雖然其并不專門針對于手機設計,但是PalmOS的優秀性和對移動設備的支持同樣使其能夠成為一個優秀的手機操作系統。Palm操作系統是多任務的,但每次只允許一個應用程序的打開,多個應用程序不能同時運行,這使得其運行速度很快,具有較好的實用性。但不適應需要多應用程序運行的場合。4.BlackBerryOSBlackBerryOS是RIM公司(ResearchInMotion)專用的操作系統?!昂谳保˙lackberry)移動郵件設備基于雙向尋呼技術。該設備與RIM公司的服務器相結合,依賴于特定的服務器軟件和終端,兼容現有的無線數據鏈路,實現了遍及北美、隨時隨地收發電子郵件的夢想。這種裝置并不以奇妙的圖片和彩色屏幕奪人耳目,甚至不帶發聲器。黑莓是目前在美國、加拿大地區相當流行的無線收發電子郵件的軟件,它將軟件客戶端結合在移動電話、PDA及其他通信終端上,用戶可以通過其無線裝置來安全地訪問電子郵件、企業數據、Web以及進行企業內部的語音通話。BlackBerryOS具有多任務處理能力,并支持特定的輸入裝置,如滾輪、軌跡球、觸摸板以及觸摸屏等。BlackBerry平臺最著名的莫過于它處理郵件的能力。該平臺通過MIDP1.0以及MIDP2.0的子集,在與BlackBerryEnterpriseServer連接時,以無線的方式激活并與MicrosoftExchange,LotusDomino或NovellGroupWise同步郵件、任務、日程、備忘錄和聯系人。該操作系統還支持WAP1.2。5.AndroidAndroid是由Google主導開發,基于現代Linux內核的開源移動操作系統,它已從最初的智能手機平臺,發展成為驅動全球數十億臺智能設備的核心系統,涵蓋手機、平板、可穿戴設備、電視、汽車信息娛樂系統以及物聯網設備等廣泛領域。作為一款以Linux為基礎的開放源碼操作系統,Android主要應用于各類便攜設備。Linux操作系統的嵌入式版本是專門為各種資源受限的嵌入式終端產品設計的,開放的源代碼和免費使用的特點使得Linux相關應用的開發人員能夠專注于業務的拓展?,F如今,越來越多的智能手機開發商也傾向于研發Linux智能手機以此來降低手機成本。Android繼承了Linux內核的堅實基礎,并在此基礎上構建了高度優化的移動體驗,其核心優勢包括:(1)卓越的硬件兼容性與可擴展性。支持從低功耗物聯網設備到高性能旗艦手機的全系列ARM架構處理器,并適配x86和新興的RISC-V等架構。通過ProjectTreble等現代化架構,實現了硬件抽象層(HAL)的標準化,顯著提升了系統更新的效率和設備兼容性。其強大的可移植性和模塊化設計,允許制造商針對不同形態因子如折疊屏,和性能需求的設備進行深度優化。(2)強大的多任務處理與現代系統架構。繼承了Linux的多用戶、多任務能力,并針對移動環境進行了高度優化,使其更符合現代安全與兼容性標準,持續增強對隱私、安全(如權限沙箱、加密、每月安全更新)和性能(如動態性能框架)的重視。(3)開放性與高度可定制化的生態系統。通過Android開源項目(AOSP)保持其開源本質,允許任何開發者訪問源代碼。制造商和開發者擁有極高的自由度,可以深度定制用戶界面(如各廠商的UI)、服務以及底層功能,打造差異化的用戶體驗。(4)面向開發者的先進平臺。提供現代化的開發工具鏈,官方集成開發環境AndroidStudio和強大的Jetpack庫極大提升了開發效率。Kotlin已成為Google推薦的首選開發語言,但同時繼續支持Java(考慮到本科生課程體系的特點本書仍然以Java作為主要開發語言),并支持跨平臺框架如Flutter,提供豐富的API和靈活的商業模式支持應用分發與變現。Android最初由AndyRubin等人創建,并于2005年被Google收購。在Google的持續投入和開放手機聯盟(現演變為更廣泛的生態系統合作)的推動下,Android實現了爆炸式增長。其內核已從早期的Linux2.6演進至長期支持(LTS)的現代Linux內核版本(如5.x系列)。系統采用了高度優化的運行時環境(ART),其用戶界面基于MaterialYou設計語言,強調個性化和一致性。憑借其開放性、廣泛的硬件支持、豐富的應用生態以及持續的創新,Android已成為全球市場占有率遙遙領先的移動操作系統,與蘋果公司的iOS以及華為的HarmonyOS共同主導市場。其SDK和開發工具持續開放,賦能全球開發者創造應用,同時制造商也能在遵循兼容性要求的前提下進行深度的界面和功能定制。6.iOSiOS在2011年6月前叫iPhoneOS,是蘋果公司為其移動設備開發的操作系統,最初是設計給iPhone和iPodtouch使用的。與MacOSX操作系統一樣,它也是以Darwin為基礎的。2011年6月之后iOS的版本為5和6,通常稱為iOS5和iOS6蘋果推出其第一款智能手機iPhone后獲得了巨大的成功。iOS繼承了MacOSX在個人電腦上界面美觀的優勢,多點觸摸技術的加入為蘋果iPhone在智能手機領域獲得了可觀的市場份額。iOS采用Quartz圖形框架,能夠通過顯卡硬件加速實現復雜的圖形顯示。然而iOS是一個不開放的平臺,用戶不能設計和加載任何第三方的應用程序。這使得iOS的擴展性受到很大的限制iOS是蘋果公司為其全系列移動設備開發的專屬操作系統,作為蘋果生態的核心組成部分,現已驅動iPhone、iPad(iPadOS已獨立)、AppleWatch(watchOS)和AppleTV(tvOS)等數十億設備。該系統基于Darwin內核深度優化,融合了macOS的穩定架構與移動端創新交互范式iOS的核心演進與技術特性總結如下(1)無縫融合的生態系統。通過Continuity技術實現蘋果設備間的無感協作(如跨設備復制粘貼、通用控制),iCloud+云服務深度集成,支持端到端加密數據同步,采用統一內存架構,顯著提升跨設備任務處理效率(2)革命性的交互體驗。引入空間計算交互范式(iOS17+配合VisionPro頭顯),靈動島動態交互區重塑通知管理形態(iPhone14Pro及以上機型),增強現實平臺ARKit5支持室內場景重建與物體追蹤(3)隱私與安全架構。隱私營養標簽強制要求應用披露數據收集行為,App追蹤透明度框架(ATT)賦予用戶廣告追蹤控制權,安全隔區協處理器SecureEnclave實現生物信息本地加密(4)開發者生態的革新。SwiftUI聲明式框架成為官方首選界面開發方案,機器學習工具包CoreML4支持設備端大模型運行,應用商店開放第三方支付通道(5)性能與圖形方面的突破。Metal3圖形引擎實現主機級光影渲染與超分辨率技術,硬件加速的空間視頻錄制(iPhone15Pro及以上機型),能效管理系統自動優化后臺進程資源分配自2007年初代iPhone發布以來,iOS已成長為移動操作系統領域的技術標桿。其封閉生態通過嚴格的App審核機制保障用戶體驗一致性,同時借助超210萬款應用構建完整服務矩陣。最新統計顯示,iOS在高端智能手機市場占據78%份額,年度開發者分成突破500億美元。7.HarmonyOS
HarmonyOS,中文名為鴻蒙操作系統,由華為于2019年正式發布,是面向萬物互聯時代研發的全場景分布式操作系統,其技術層次可分為三個階段
內核層,初期采用多內核設計(Linux宏內核+LiteOS輕內核),2021年升級為自研微內核架構(OpenHarmony3.0+),實現確定性低時延(時延波動率<5%)與高安全等級(CCEAL5+認證)
系統架構,基于分布式軟總線技術,實現跨設備硬件資源虛擬化;2023年推出異構計算框架,支持CPU/GPU/NPU協同調度
開發體系,構建方舟編譯器(靜態編譯提升效率40%)、鴻蒙IDE工具鏈(支持ArkTS/JS/Java),并貢獻核心代碼至OpenHarmony開源項目(開源率超80%)基于分布式架構與微內核設計,使得HarmonyOS具備以下特點:(1)全場景的無縫協同。支持手機、平板、車機、智能家居等10+類設備形態,通過超級終端功能實現設備“一拉即合”,跨屏協作時延<20ms(2)原生智能與流暢體驗。集成盤古大模型端側引擎,實現本地化AI服務(如語義理解、圖像生成等),確定性時延引擎保障關鍵任務優先調度,應用啟動速度提升30%(3)隱私安全雙體系。微內核實現權限最小化,其內核代碼僅萬行級,TEE可信執行環境+機密計算框架實現端到端數據加密(4)彈性部署能力。系統可裁剪至128KB內存(IoT設備)或擴展至16GB+(旗艦手機),組件化架構支持按需配置
作為國產操作系統的代表,鴻蒙在工業互聯網、智能座艙等領域形成領先優勢,搭載設備數目前已突破8億臺,覆蓋手機、平板、智慧屏等主力產品。在鴻蒙生態方面,其全球開發者超300萬,開源社區貢獻者逾1.2萬人,應用商店月活達2.3億。
作為我國自研的操作系統,HarmonyOS實現從內核到框架的全棧自研,規避安卓/GMS斷供風險,真正實現了技術自主可控,同時主導IEC物聯網操作系統國際標準,推動了行業標準制定。但HarmonyOS目前也面臨一些困境,如海外生態拓展受限,高端芯片供應制約硬件迭代等,同時采取相應對策,如目前開源鴻蒙已適配龍芯/兆芯等國產芯片。什么是Android021.2.1Android的歷史"Android一詞起源"Android一詞最早出現于法國作家利爾亞當(AugusteVilliersdel'Isle-Adam)在1886年發表的科幻小說《未來夏娃》(L'èvefuture)中,將外表像人的機器起名為Android.Android發展歷程Android本意指“機器人”,是一個全身綠色的機器人,綠色也是Android的標志。Android最初由現任Google工程副總裁的安迪?羅賓(AndyRubin)開發于2003年,于2005年被Google收購Android操作系統簡介Android是基于Linux內核的軟件平臺和操作系統,是Google在2007年11月5日公布的手機系統平臺,早期由Google開發,后由開放手機聯盟(OpenHandsetAlliance)開發。它采用了軟件堆層(SoftwareStack,又名以軟件疊層)的架構,主要分為三部分。低層以Linux內核工作為基礎,只提供基本功能;其他的應用軟件則由各公司自行開發,以Java作為編寫程序的一部分。Android在未公開之前常被傳聞為Google電話或gPhone,大多傳聞認為Google開發的是自己的手機電話產品,而不是一套軟件平臺。1.2.2Android的發展2003年10月,Android公司在加州PaloAlto市成立,聯合創始人為AndyRubin、RichMiner、NickSear與ChrisWhite。2005年8月,Google收購了成立僅22個月的高科技企業Android公司。2007年11月5日,Google公司正式向外界展示Android操作系統。Google與34家手機制造商、軟件開發商、電信運營商和芯片制造商共同創建開放手持設備聯盟。2008年5月28日,PatrickBrady于GoogleI/O大會上提出AndroidHAL架構圖,8月18日,Android獲得美國聯邦通信委員會的批準。Android軟件一經推出,版本升級非??欤瑤缀趺扛舭肽昃陀幸粋€新的版本發布。2008年9月發布Android第一版Android1.1。后從Android1.5版本開始,Android用甜點作為它們系統版本代號的命名方法。2009年4月30日,官方1.5版本Cupcake(紙杯蛋糕)正式發布。2009年9月15日,Android1.6Donut(甜甜圈)版本發布。2009年10月26日,Android2.0/2.0.1/2.1Eclair(松餅)版本發布。2010年5月20日,Android2.2/2.2.1Froyo(凍酸奶)軟件發布。2010年12月7日,Android2.3Gingerbread(姜餅)版本發布。2011年2月2日,Android3.0Honeycomb(蜂巢)版本發布。2011年5月11日,Android3.1Honeycomb(蜂巢)版本發布。2011年7月13日,Android3.2Honeycomb(蜂巢)版本發布。2011年10月19日,Android4.0IceCreamSandwich(冰激凌三明治)版本在香港正式發布。2011年12月20日,谷歌發布了Android4.0操作系統的最新版本4.0.3,稱其對Android系統作出了多處改進,并修復了一些缺陷。2012年6月28日,谷歌2012年I/O開發者大會上發布了Android4.1操作系統,Android4.1JellyBean(果凍豆)是繼“冰激凌三明治”之后的下一版Android系統。2012年10月底,Google在網上以在線的形式發布了全新的Android4.2系統,以及新一代的Nexus系列手機LGNexus4和平板電腦Nexus10。Android4.2新系統界面改動不大,代號還稱為JellyBean不變,新增了系統全景拍照以及無線同步輸出等實用的小功能,并在系統層面做了更多的優化。2013年7月25日,發布Android4.3。2013年11月,Android4.4發布,代號KitKat。2014年10月16日,發布Android7.0版本,代號Nougat,第一次全面支持ART,并支持平板和可穿戴設備的開發。2015年3月,Google發布了Android5.1版本,主要目的是修復Android7.0版本的Bug,因此其版本號仍然為Nougat。2015年5月8日,Google在GoogleI/O2015大會發布Android6.0版本,版本號為Marshmallow。2016年5月18日,Google在GoogleI/O2016大會發布Android7.0版本,版本號為AndroidNougat,又稱為AndroidN。2017年8月21日,發布Android8.0,英文代號為Oreo(奧利奧),主要更新內容包括畫中畫模式、通知渠道、ProjectTreble以及自動填充框架等。2018年8月6日,發布Android9.0,英文代號為Pie(派),主要更新內容包括手勢導航、數字健康看板、自適應電池/亮度、神經網絡API1.1等。2019年9月3日,發布Android10,英文代號為Q,主要更新內容包括全局深色模式、折疊屏官方支持、隱私控制中心、ProjectMainline等。2020年9月8日,發布Android11,英文代號為RedVelvetCake(紅絲絨蛋糕),主要更新內容包括對話通知分區、一次性權限授權、內置屏幕錄制、設備控制中心等。2021年10月4日,發布Android12,英文代號為SnowCone(雪糕),主要更新內容包括MaterialYou設計語言、隱私指示器、近似位置權限、游戲模式等。2022年8月15日,發布Android13,英文代號為Tiramisu(提拉米蘇),主要更新內容包括應用獨立語言設置、照片選擇器、藍牙LEAudio支持、跨設備剪貼板等。2023年10月4日,發布Android14,英文代號為UpsideDownCake(翻轉蛋糕),主要更新內容包括超大字體重構、HealthConnect統一數據接口、預測性返回手勢、電池循環計數等。2024年10月3日,發布Android15,英文代號為VanillaIceCream(香草冰淇淋),主要更新內容包括衛星通信支持、應用歸檔功能、動態性能框架升級、空間音頻API等。2025年發布Android16,英文代號為Baklava(拔克拉弗餅),主要更新內容包括硬件級AI加速引擎、隱私沙盒正式版、多屏協同低延遲優化等。本書的編寫就是基于Android16版本進行的。1.2.3Android的優點
Android的優點主要包括以下6項內容:Android性價比高
消費者選擇產品,價格是必然要考慮的一大因素,iPhone雖好,但是價格讓一般人望而卻步。蘋果就像是寶馬、奔馳,雖然大家都認為它很好,但是一般人消費不起,只有看的份兒。而Android如同大眾,滿大街跑的都是,甚至有一些型號是可以與寶馬、奔馳相媲美的。目前安卓系統具有全價位覆蓋的高性能體驗,形成了折疊屏旗艦到性能機型再到普惠設備的完整產品矩陣。高端市場如三星GalaxyZFold系列、GooglePixelPro等,中低端機型如華為、小米等品牌提供千元級5G設備,性能達驍龍7系水準。另外120Hz高刷屏、億級像素主攝、衛星通信等功能覆蓋了80%在售機型。應用程序生態體系龐大
智能手機的核心是各種App應用的使用,目前各種品牌的安卓手機自帶的應用市場能夠提供500萬左右的備選應用安裝,且隨著開發者的增多以及開發范式的逐步成型,安卓代碼能夠實現一次編碼,多次部署,因此App的數量還將繼續增長,目前該數量已遠超iOS應用數量。智能手機廠家助力
現在,世界很多智能手機廠家幾乎都加入了Android陣營,并推出了一系列的Android智能機。很多Android智能手機廠商與谷歌建立了Android平臺技術聯盟,廠商加盟的越多,手機終端就會越多,其市場潛力就越大。運營商鼎力支持目前全球300+運營商預裝Android,支持毫米波/Sub-6雙模5G,Android15+原生支持雙向衛星通信(華為北斗、高通SnapdragonSatellite),GoogleFi虛擬運營商服務覆蓋200+國家,流量資費低于當地運營商30%。1.2.3Android的優點
硬件形態與技術不斷創新形態創新方面,主導折疊屏、卷軸屏、AR眼鏡等新設備品類;硬件配置方面融合LTPO自適應刷新率屏幕、UWB精準定位、端側大模型算力芯片;模塊化拓展方面通過Matter協議統一控制智能家居/車載設備,覆蓋了近2億+物聯網終端。
開源生態與安全進化Android是開源的,允許第三方修改,這在很大程度上容許廠家根據自己的硬件更改版本,從而能夠更好地適應硬件,與之形成良好的結合,Android的開源項目OSP代碼開源率超95%,各個廠商可深度定制屬于自己的安卓系統。另外,開源安全聯盟(OSA)能夠實現漏洞72小時內全球協同修復,從而給安卓生態提供了更好的安全性能,也給開發人員提供了一個更大的創新空間,使Android版本升級更快、更穩定、更安全。Android系統架構03Android系統架構
Android系統架構圖1.1是Android操作系統的架構,架構包括5層,由上到下依次是應用程序層、應用程序框架層、系統核心庫層、硬件抽象層和Linux內核。其中,系統核心類庫中包含原生C/C++庫及Android運行環境圖1.1
Android操作系統的架構1.3.1應用程序層Android應用程序架構Android裝配了一個核心應用程序集合,包括E-mail客戶端、SMS短消息程序、日歷、地圖、瀏覽器、聯系人管理程序和其他程序,所有應用程序都是用Java編程語言編寫的。用戶開發的Android應用程序和Android的核心應用程序是同一層次的,它們都是基于Android的系統API構建的。1.3.2應用程序框架層
應用程序的體系結構旨在簡化組件的重用,任何應用程序都能發布它的功能且任何其他應用程序都可以使用這些功能(需要服從框架執行的安全限制),這一機制允許用戶替換組件。開發者完全可以訪問核心應用程序所使用的API框架。通過提供開放的開發平臺,Android使開發者能夠編制極其豐富和新穎的應用程序。開發者可以自由地利用設備硬件優勢訪問位置信息、運行后臺服務、設置鬧鐘、向狀態欄添加通知等。所有的應用程序都是由一系列的服務和系統組成的,主要包括以下幾種:
視圖(Views)。這里的視圖指的是豐富的、可擴展的視圖集合,可用于構建一個應用程序,包括列表(Lists)、網格(Grids)、文本框(TextBoxes)、按鈕(Buttons),甚至是內嵌的Web瀏覽器。
內容管理器(ContentProviders)。內容管理器使得應用程序可以訪問另一個應用程序的數據(如聯系人數據庫)或者共享自己的數據。
資源管理器(ResourceManager)。資源管理器提供訪問非代碼資源,如本地字符串、圖形和分層文件(layoutfiles)。
通知管理器(NotificationManager)。通知管理器使得所有的應用程序都能夠在狀態欄顯示通知信息。
活動管理器(ActivityManager)。在大多數情況下,每個Android應用程序都運行在自己的Linux進程中。當應用程序的某些代碼需要運行時,這個進程就被創建并一直運行下去,直到系統認為該進程不再有用為止,然后系統將回收該進程占用的內存以便分配給其他的應用程序。活動管理器管理應用程序生命周期,并且提供通用的導航回退功能。1.3.3系統核心庫
Android本地系統核心庫包含原生C/C++庫和Android運行時庫,以供Android系統的各個組件使用。這些功能通過Android的應用程序框架為開發者提供服務。許多核心Android系統組件和服務(如ART和HAL)都是從需要用C和C++編寫的原生庫的原生代碼構建的。Android平臺提供Java框架API,用于向應用提供其中一些原生庫的功能。例如,可以通過Android框架的JavaOpenGLAPI訪問OpenGLES,以支持在應用中繪制和操控2D和3D圖形。下面介紹C/C++庫中的一些核心庫:
系統C庫。標準C系統庫(libc)的BSD衍生,調整為基于嵌入式Linux設備。
媒體庫?;赑acketVideo的OpenCORE,這些庫支持播放和錄制許多流行的音頻和視頻格式,以及靜態圖像文件,包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG。
界面管理。管理訪問顯示子系統,并且為多個應用程序提供2D和3D圖層的無縫融合。
LibWebCore。新式的Web瀏覽器引擎,支持Android瀏覽器和內嵌的Web視圖。
SGL。一個內置的2D圖形引擎。
3D庫?;贠penGLES1.0APIs實現,該庫可以使用硬件3D加速或包含高度優化的3D軟件光柵。
FreeType。位圖和矢量字體顯示渲染。
SQLite。SQLite是一個所有應用程序都可以使用的強大且輕量級的關系數據庫引擎。
1.3.4硬件抽象層(HLA)硬件抽象層(HAL)提供了用于向較高級別的JavaAPI框架公開設備硬件功能的標準接口。HAL由多個庫模塊組成,每個模塊都為特定類型的硬件組件(例如相機或藍牙模塊)實現一個接口。當框架API發出調用以訪問設備硬件時,Android系統將為該硬件組件加載庫模塊。
1.3.5Linux內核Android基于Linux提供核心系統服務,例如安全、內存管理、進程管理、網絡堆棧、驅動模型。除了標準的Linux內核外,Android還增加了內核的驅動程序,如Binder(IPC)驅動、顯示驅動、輸入設備驅動、音頻系統驅動、攝像頭驅動、Wi-Fi驅動、藍牙驅動、電源管理。Linux內核也作為硬件和軟件之間的抽象層,它隱藏具體硬件細節而為上層提供統一的服務。分層的好處就是使用下層提供的服務為上層提供統一的服務,屏蔽本層及以下層的差異,當本層及以下層發生了變化時,不會影響到上層,可以說是高內聚、低耦合。Android16新特性介紹041.4.1宏觀視角:從“移動優先”到“大屏生產力”
Android16DesktopWindowingModeAndroid16延續了Google近年來“大屏優先”的戰略方向,首次在系統級別引入DesktopWindowing模式。該模式允許平板與折疊屏設備以窗口化、可拖曳、可層疊的形式運行應用,從而實現近似桌面級的多任務體驗。開發者需確保窗口生命周期與拖曳數據的一致性。1.4.2用戶可見的新交互:通知、返回動畫與狀態表達進度式通知系統新增Notification.ProgressStyle,開發者可通過setProgressStyle()將外賣配送、文件下載等階段性任務直接呈現于通知欄。該樣式支持分階段文案與實時百分比更新,顯著減少用戶跳轉次數。預測返回動畫針對高頻連續通知場景(如安防攝像頭的運動觸發警報、即時通訊工具的連續消息),系統引入多模態聚類算法,自動識別同一應用內具有強時序或語義關聯的通知流,將其折疊為單一聚合通知單元。用戶可通過展開操作查看詳情,避免鎖屏與狀態欄被重復信息淹沒。擴展狀態API系統提供三態CheckBox、字段必填提示與展開/折疊狀態的統一語義。TalkBack朗讀更加精準,開發者只需調用ViewCompat.setStateDescription()即可同步無障礙樹。1.4.3影像系統:相機與視頻的“專業級”升級
Android16通過底層算法重構與編解碼器革新,顯著提升了移動設備的影像創作能力與視覺呈現質量,核心升級集中于以下3個維度。(1)混合自動曝光。CameraCharacteristics.CONTROL_AE_MODE_OFF_KEEP_AE允許應用關閉自動曝光
的同時
保留測光結果,為專業相機App帶來
可交互曝光滑桿。實驗環節可讓學生對比傳統AE與混合模式的成像差異。。(2)夜景場景檢測。通過EXTENSION_NIGHT_MODE_INDICATOR,系統實時返回環境照度閾值,開發者可據此一鍵切換夜間濾鏡,無需額外傳感器計算。(3)APV-422-10編碼。新增MediaFormat.MIMETYPE_VIDEO_APV支持2Gbps10-bit422采樣,為后期調色保留更大空間。課程可引入FFmpeg管線演示高位深視頻的導入與導出。(4)圖形與渲染:AGSL的自定義濾鏡生態。Android16將AGSL(AndroidGraphicsShaderLanguage)擴展至
自定義濾鏡與混合模式。開發者可在Kotlin/Java層通過RuntimeColorFilter與RuntimeXfermode直接編寫GPU著色器,無需NDK。實驗示例:利用AGSL實現實時LOMO濾鏡
并測量GPU占用。Android16新特性介紹:1.4.4國際化:直書文字與度量系統分離
直書文字Paint.setVerticalTextFlag(true)可在不旋轉Canvas的情況下實現豎排日文/蒙古文渲染,同時保留StaticLayout的換行與對齊邏輯。
度量系統分離地區偏好與語言解耦,用戶可在中文界面下使用英制度量(in、ft)。開發者僅需調用NumberFormat.getInstance()即可自動切換1.4.5后臺任務:JobScheduler自檢API
新增JobScheduler.getPendingJobReasons()返回作業未執行的詳細原因(電量限制、網絡條件、系統策略),幫助開發者快速定位后臺任務異常。實驗環節可讓學生故意觸發。setRequiredNetworkType(NETWORK_TYPE_UNMETERED)并觀察返回代碼。THEEND謝謝第2章
Android開發環境搭建CONTENTS目錄02
軟件安裝01
系統需求03
創建第一個Android應用程序04
調
試
程
序系統需求012.1系統需求支持Android開發的系統如下,讀者可以選擇自己喜歡的系統平臺。
WindowsXP(32位)、Vista(32位或64位)、Windows7(32位或64位)、Windows10(32位或64位)。
MacOSX10.5.8或以后版本(x86)。LinuxUbuntu。軟件安裝022.2.1JDK的安裝
JDK的安裝步驟說明如下:
下載JDK。通過Android系統架構可以知道,要進行開發需要下載并安裝Java的開發環境。首先需要下載免費JDK軟件包。Android16SDK新特性需要高于JDK17以上版本支持。JDK包含一整套開發工具。由于Sun公司已經被Oracle公司收購,因此需要到Oracle公司的網站下載,下載地址是:/technetwork/java/javase/downloads/index.html,值得注意的是,必須下載完整的JDK開發包,不可以只安裝JRE運行版本,下載界面如圖2.1所示。目前最新版本是JDK24,但是為了更好的穩定性,建議使用JDK24。
安裝JDK。雙擊下載的可執行文件,接受許可后就可以安裝了。安裝過程比較簡單,就不再展開描述了。
配置Java環境變量。為了使用Java工具進行編譯、運行,需要配置Java環境變量,采用相對路徑的方法,需要設置的三個環境變量:JAVA_HOME、CLASSPATH和PATH。假設將JDK安裝到了C:\JAVA\JDK24\路徑下,則右擊“我的電腦”|“屬性”|“高級”|“環境變量”。
配置JAVA_HOME:JAVA_HOME=“C:\JAVA\JDK24\”。
配置PATH:PATH=“%JAVA_HOME%\bin;”。圖2.1
JavaJDK下載界面2.2.2AndroidStudio
圖2.2
AndroidStudioMeerkat下載頁開發Android16應用程序需要下載支持相關特性開發的AndroidStudio版本。Android官方推薦的是meerkat版本。到/studio開發網頁,如圖2.2所示,根據自己的操作系統下載Androidstudio軟件安裝包。本書使用官方推薦的AndroidStudioMeerkatFeatureDrop|2024.3.2Patch1進行開發,發布時間是2025.5.22。
下載完成后,雙擊即可安裝。AndroidStudio包含開發Android應用所需要的文件、運行環境及相關工具,如圖2.3所示。圖2.3
AndroidStudio運行界面2.2.2AndroidStudio
AndroidStudio的“Tools”菜單下包含一個“Android”菜單項,如圖2.4所示,單擊其中的子菜單“SDKManager”會啟動SDK管理器。通過SDK管理器可以查看本機已經安裝的AndroidSDK版本,如圖2.5所示。
SDK管理器,如圖2.6所示,可完成對SDK的文檔、工具等進行相應的安裝和更新工作。選中status項為notinstalled的項,單擊OK按鈕即可下載。圖2.4
Android子菜單圖2.6
SDK管理器下載SDK圖2.5
SDKManager2.2.3創建AVD
在AndroidStudio中單擊
Tools|DeviceManager命令,啟動Android虛擬設備管理器,如圖2.7所示。單擊按鈕,選擇“CreateVirtualDevice”出現新建虛擬設備界面,如圖2.8所示。總體而言,界面分為左中右三部分,左側為Phone、Tablet、WearOS、Desktop、TV、Automotive六個類別,說明Android16對手機、平板、電視、可穿戴設備、桌面應用、車載應用的開發都提供了支持;右側為針對左側的某個類別已經建立好的虛擬設備的配置文件,可基于配置文件直接創建虛擬設備。圖2.7
Device管理器圖2.8
新建虛擬設備界面2.2.3創建AVD
例如,要基于SmallPhone配置文件創建虛擬手機,其分辨率為1080×2400,顯示分辨率為420dpi,需要在左側單擊“Phone”,在中間選擇“SmallPhone”配置文件,然后單擊“Next”按鈕,出現虛擬設備配置界面,如圖2.9所示,為虛擬設備設定名字,選擇APILEVEL和SERVICE,選擇系統映像文件,決定虛擬手機的Android系統版本、系統架構以及API等級。設定APILevel為36,架構為x86_64,單擊“Additionalsettings”標簽頁,進入虛擬設備參數配置界面,如圖2.10所示,可對虛擬設備的皮膚、前后攝像頭、橫屏還是豎屏、存儲空間、繪圖使用硬件加速還是軟件加速等信息進行配置。最后單擊“Finish”按鈕,完成虛擬手機設備的創建。創建的虛擬設備會出現在設備管理器中,單擊運行即可啟動,如圖2.11所示。圖2.9
系統映像選擇圖2.10
虛擬設備參數配置圖2.11
新創建的AVD創建第一個Android應用程序032.3.1創建HelloWorld工程
啟動AndroidStudio,依次選擇File|New|NewProject,將會出現如圖2.12所示的界面。左側選擇要創建的工程類型,右側選擇具體工程模板。左側我們選擇“PhoneandTablet”創建手機和平板應用,右側選擇NoActivity工程模板,以創建一個沒有Activity的工程架構代碼。單擊Next按鍵,出現如圖2.13所示工程配置界面。在name項中輸入項目名稱“HelloWorld”,在packagename中輸入“roduction”,系統會自動生成包名為“roduction.helloworld”,ProjectLocation指定工程文件存放的位置,“Language”選擇“Java”。AndroidStudio支持Java和Kotlin編程,本書的編程語言都為java?!癿inimumSDK”設置為“API36.0”。單擊“Finish”按鈕,完成工程創建,生成如圖2.14工程文件。AndroidStudio會用Java語言進行代碼生成,同時支持Kotlin語言。圖2.14
創建的工程文件圖2.13
設置工程參數圖2.12
創建HelloWorld工程2.3.1創建HelloWorld工程
AndroidStudio會根據剛才指定的相關信息生成相關工程結構,如圖2.14所示。但是由于目前工程中并不存在Activity,所以無法直接運行。下面我們為該工程添加可運行的Activity。在Android視圖下,右擊Java文件夾,選擇NEW→Acttivity→EmptyViewsActivity,如圖2.15所示,出現新建Activity界面,如圖2.16設置。選中generateaLayoutFile復選框以生成布局文件,選中LauncherActivity復選框,使新建的mainActivity成為啟動Activity,SourceLanguage選擇Java。點擊“Finish”,工程中會生成MainActivity.java文件,同時在res目錄下,會生成layout/activity_main.xml布局文件。雙擊activity_main.xml打開文件編輯器,拖入TextView組件。由于布局文件默認布局為ConstraintLayout,因此需要為拖入的TextView組件新建水平和垂直兩個方向的constraint。然后,修改TextView的Text屬性為“HelloWorld!”如圖2.17所示。圖2.16Activity設置圖2.15新建JavaActivity2.3.1創建HelloWorld工程
通過DeviceManager啟動虛擬機“SmallPhone”,按Shift+F10快捷鍵,將生成的工程運行到虛擬機上查看運行效果,如圖2.18所示。圖2.18運行效果圖2.17添加TextView2.3.2相關代碼
雙擊HelloWorld工程中的MainActivity.java,該文件程序代碼如下:packageroduction.helloworld;importandroid.os.Bundle;importandroidx.appcompat.app.AppCompatActivity;publicclassMainActivity2extendsAppCompatActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setTheme(androidx.appcompat.R.style.Theme_AppCompat_Light);setContentView(R.layout.activity_main);}}MainActivity.java中的代碼比較簡單,表明類MainActivity繼承了AppCompatActivity類,并重寫了onCreate()方法。AppCompatActivity類是AndroidStudio中默認的構建自定義Activity的模板類,與Activity相比,AppCompatActivity提供了更豐富的功能??萍荚贛ainActivity的onCreate()方法體中調用了父類的onCreate()方法,然后調用以下語句:
setTheme(androidx.appcompat.R.style.Theme_AppCompat_Light);setTheme設置了活動的主題為Theme.AppCompat.Light。這是一個預定義的主題,提供了一個明亮的用戶界面風格。setTheme方法必須在setContentView之前調用,否則可能不會生效。setContentView()方法顯示視圖界面。Android工程中使用XML文件來設計視圖界面,R.layout.activity_main是Android工程中默認的布局文件的名字,即activity_main.xml。Activity_main.xml的內容如下:<?xmlversion="1.0"encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:id="@+id/main"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="83dp"android:layout_marginTop="184dp"android:text="HelloWorld!"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"/></androidx.constraintlayout.widget.ConstraintLayout>ConstraintLayout布局是系統新增的布局,允許通過約束(Constraints)來定義視圖之間的相對位置關系,從而實現靈活且高效的布局設計,在Android中廣泛應用于構建復雜的用戶界面。2.3.3工程文件結構解析
HelloWorld只是一個簡單的Android應用,要創建更多的Android應用,還要詳細地了解Android應用程序結構。AndroidStudio的Project工程文件結構如圖2.19所示。下面分別介紹各個目錄或文件的作用。
java目錄。該目錄(文件夾)中包含應用程序的所有源代碼。在文件夾中可以創建若干包,在包中可以創建應用的處理邏輯以及應用的Activity,MainActivity.java就是在創建項目的時候創建的一個Activity,在Activity中可以編寫控制View的邏輯。
Java(generated)目錄。該目錄(文件夾)存放的是項目中的Java文件編譯生成的class類。
res目錄。目錄(文件夾)中放置的是Android要用到的各種程序資源。其中,常見的子文件夾有drawable、layout、values等。其中,drawable目錄放置應用到的圖片資源;layout目錄放置一些與UI相關的布局文件,都是以XML文件方式保存;values目錄中放置的是一些字符串、數組、顏色、樣式和動畫等資源,values目錄中的每一個文件都會轉化成R.java中的一個靜態類,文件中的每一個資源都會轉化成R.java中對應靜態類的靜態整型常量,這樣Activity中通過一個解析器就可以獲取對應的資源。
res(generated)目錄。該目錄存放依據res中的資源生成的資源文件。
manifests目錄。該目錄(文件夾)下存放AndroidManifest.xml。這個文件是整個項目的配置資源,里面配置的內容包括當前應用程序所在的包、應用程序中的Activity、應用程序的訪問權限等。調試程序042.4.1設置斷點設置斷點檢查每個變量的運行輸出更適合一些大型項目的排錯或狀態檢測,是Java開發中不可缺少的調試方法設置斷點的方法有兩種(1)雙擊AndroidStudio代碼編輯區左邊的區域(2)在需要添加或者移除斷點的代碼處接Ctrl+F8快捷鍵2.4.2調試通過單擊工具欄上的按鈕,或者在項目上右擊,然后選擇Debug…菜單命令,或者按Shift+F9快捷鍵,啟動程序的調試模式,如圖2.20所示當程序運行到設置的斷點時就會停下,這時可以按照下面的功能鍵按需求進行調試快捷鍵F8單步執行程序快捷鍵F7單步執行程序,遇到方法時進入快捷鍵Alt+F9運行到光標處在調試界面,變量的值會出現在Variables窗口中,這樣就可以查看運行至斷點時變量當前的值,可在Watches界面添加想觀測的變量或者對象的值圖2.20
調試界面THEEND謝謝第3章
Android應用程序結構CONTENTS目錄02
Activity01
應用程序基本組成03
AppCompatActivity04
資
源05
Manifest文件應用程序基本組成01Android應用程序開發概述Android作為一個移動設備的開發平臺,其軟件層次結構包含操作系統(OS)、中間件(MiddleWare)和應用程序(Application)。其中,Android的應用程序通常涉及用戶界面和用戶交互,這類程序是用戶實實在在能感受到的,目前Android本身提供了桌面、聯系人、電話和瀏覽器等眾多的核心應用,同時還允許開發者使用應用程序框架層的API實現自己的程序。Android系統沒有使用常見的應用程序入口點的方法(例如main()方法),應用程序是由組件組成的,組件可以調用相互獨立的基本功能模塊,根據完成的功能不同,Android劃分了4類核心組件,即Activity、Service、BroadcastReceiver和ContentProvider,各組件之間的消息傳遞通過Intent完成。應用程序基本組成3.1.1ActivityAndroidActivity概述Activity是Android應用程序核心組件中最基本的一種,是用戶和應用程序交互的窗口。在Android應用程序中,一個Activity通常對應一個單獨的視圖。一個Android應用程序是由一個或多個Activity組成的,這些Activity相當于Web應用程序中的網頁,用于顯示信息,并且相互之間可以進行跳轉。和網頁跳轉不同的是,Activity之間的跳轉可以有返回值。Activity生命周期管理當新打開一個視圖時,之前的那個視圖會被置為暫停狀態,并且壓入歷史堆棧中,用戶可以通過回退操作返回以前打開過的視圖。Activity是由Android系統進行維護的,它有自己的生命周期,即“產生、運行、銷毀”,但是在這個過程中會調用許多方法,如創建onCreate()、激活onStart()、恢復onResume()、暫停onPause()、停止onStop()、銷毀onDestroy()和重啟onRestart()等。3.1.2Service
Service是一種類似于Activity但是沒有視圖的程序,它沒有用戶界面,可以在后臺運行很長時間,相當于操作系統中的一個服務。Android定義了兩種類型的Service,即本地Service和遠程Service。本地Service是只能由承載該Service的應用程序訪問的組件,而遠程Service是供在設備上運行的其他應用程序遠程訪問的Service。3.1.3BroadcastReceiver
BroadcastReceiver的意思是“廣播接收者”,顧名思義,它用來接收來自系統和其他應用程序的廣播,并做出回應。在Android系統中,當有特定事件發生時就會產生相應的廣播。廣播體現在方方面面,例如,當開機過程完成后,系統會產生一條廣播,接收到這條廣播就能實現開機啟動服務的功能;當網絡狀態改變時,系統會產生一條廣播,接收到這條廣播就能及時地做出提示和保存數據等操作;當電池電量改變時,系統會產生一條廣播,接收到這條廣播就能在電量低時告知用戶及時保存進度等。這些廣播可以被BroadcastReceiver接收到,進而進行處理。3.1.4ContentProvider
文件、數據庫等數據在Android系統內是私有的,僅允許被特定應用程序直接使用。在兩個程序之間,數據的交換或共享由ContentProvider實現。ContentProvider類實現了一組標準方法的接口,從而能夠讓其他的應用保存或讀取ContentProvider提供的各種數據類型。3.1.5Intent
Intent并不是Android應用程序四大核心組件之一,但是其重要性無可替代,因此在這里我們做一下簡單介紹。Android應用程序核心組件中的三大核心組件——Activity、Service、BroadcastReceiver,通過消息機制被啟動激活,而所使用的消息就是Intent。Intent是對即將要進行的操作的抽象描述,承擔了Android應用程序三大核心組件相互之間的通信功能。Activity023.2
ActivityActivity是Android組件中最基本也是最為常見的組件。Activity是用戶接口程序,原則上它會提供給用戶一個交互式的接口功能,幾乎所有的Activity都要和用戶打交道,也有人把它比喻成Android的管理員。需要在屏幕上顯示什么、用戶在屏幕上做什么、處理用戶的不同操作等都由Activity來管理和調度。Activity提供用戶與Android系統交互的接口,用戶通過Activity來完成自己的目的,例如打電話、拍照、發送E-mail、查看地圖等。每個Activity都提供一個用戶界面窗口,一般情況下,該界面窗口會填滿整個屏幕,但是也可以比屏幕小,或者浮在其他的窗口之上。一個Android應用程序通常由多個Activity組成,但是其中只有一個為主Activity,其作用相當于Java應用程序中的main函數,當應用程序啟動時,作為應用程序的入口首先呈現給用戶。Android應用程序中的多個Activity可以直接相互調用以完成不同工作。當新的Activity被啟動的時候,之前的Activity會停止,但是不會被銷毀,而是被壓入“后退棧(BackStack)”的棧頂,新啟動的Activity獲得焦點,顯示給用戶?!昂笸藯!弊裱昂笕胂瘸觥钡脑瓌t。當新啟動的Activity被使用完畢,用戶單擊“Back”按鈕時,當前的Activity會被銷毀,而原先的Activity會被從“后退?!钡臈m攺棾霾⑶壹せ?。當Activity狀態發生改變時,都會通過狀態回調函數通知Android系統。而程序編寫人員可以通過這些回調函數對Activity進行進一步的控制。下面對Activity生命周期及其涉及的回調函數進行簡單介紹。3.2.1Activity的生命周期從本質上講,Activity在生命周期中共存在三個狀態,分別如下。
運行態:運行態指Activity運行于屏幕的最上層并且獲得了用戶焦點。
暫停態:暫停態是指當前Activity依然存在,但是沒有獲得用戶焦點。在其之上有其他的Activity處于運行態,但是由于處于運行態的Activity沒有遮擋住整個屏幕,當前Activity有一部分視圖可以被用戶看見。處于暫停態的Activity保留了自己所使用的內存和用戶信息,但是在系統極度缺乏資源的情況下,有可能會被殺死以釋放資源。
停止態:停止態是指當前Activity完全被處于運行態的Activity遮擋住,其用戶界面完全不能被用戶看見。處于停止態的Activity依然存活,也保留了自己所使用的內存和用戶信息,但是一旦系統缺乏資源,停止態的Activity就會被殺死以釋放資源。Activity在生命周期中從一種狀態到另一種狀態時會激發相應的回調方法,這些回調方法包括:
onCreate(BundlesavedInstanceState)。創建Activity時調用。設置在該方法中,還以Bundle的形式提供對以前儲存的任何狀態的訪問。其中參數savedInstanceState對象是用于保存Activity的對象的狀態。
onStart()。Activity變為在屏幕上對用戶可見時調用。
onResume()。Activity開始與用戶交互時調用(無論是啟動還是重啟一個活動,該方法總是被調用)。
onPause()。當Android系統要激活其他Activity時,該方法被調用,暫?;蚴栈谻PU和其他資源時調用。
onStop()。Activity被停止并轉為不可見階段時調用。
onRestart()。重新啟動已經停止的Activity時調用。
onDestroy()。Activity被完全從系統內存中移除時調用,該方法被調用可能是因為有人直接調用finish()方法或者系統決定停止該活動以釋放資源。3.2.1Activity的生命周期
上面7個生命周期方法分別在4個階段按照一定的順序進行調用,這4個階段如下:
啟動Activity。在這個階段依次執行3個生命周期方法:onCreate、onStart和onResume。
Activity失去焦點。如果在Activity獲得焦點的情況下進入其他的Activity或應用程序,這時當前的Activity會失去焦點。在這一階段,會依次執行onPause和onStop方法。
Activity重獲焦點。如果Activity重新獲得焦點,會依次執行3個生命周期方法:onRestart、onStart和onResume。
關閉Activity。當Activity被關閉時,系統會依次執行3個生命周期方法:onPause、onStop和onDestroy。Activity生命周期中方法的調用過程如圖3.1所示。圖3.1
Activity生命周期通過圖3.1,可以很直觀地了解到Activity的整個生命周期。Activity的生命周期表現在三個層面,如圖3.2所示。通過圖3.2可以更清楚地了解Activity的運行機制。如果Activity離開可見
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三年級信息技術下冊 指揮窗口教學設計 浙江攝影版
- 湘教版美術九年級2.《瞬間的精彩》教學設計
- 2026年職業技能鑒定考試菌類栽培員初級職業技能試題及答案
- 2026年全國企業員工全面質量管理知識競賽質量過關驗收測試題及答案
- 新疆烏魯木齊縣第一中學2012屆九年級體育 第十三周《跳繩》教案 人教新課標版
- 2026年寵物美容主題公園服務流程規劃
- 《聞王昌齡左遷龍標遙有此寄》名師課件
- 2026年藥物分析習題庫附答案
- 2026年江蘇建筑職業技術學院單招綜合素質考試題庫及答案
- 2025年三支一扶考前押題訓練題庫(含答案)
- 2026年4399u3d筆試題及答案
- 無人機群飛行規劃員職業技能鑒定考試復習題庫(附答案)
- 2026年京東數據分析崗面試專業知識考點精講
- 重慶市巴南區教育事業單位遴選教師考試模擬試題及答案
- 心梗三項課件
- 中國絹云母礦化妝品填料市場與替代材料對比研究
- 重癥康復課件
- 2023-2025全國高考英語試題匯編:完形填空
- 高考物理一輪復習 考點精講 考點08 實驗:探究彈簧彈力與形變量的關系 (原卷版)
- 2025年城區小學數學教師選調進城考試試題(含答案)
- 皋埠中學分班考試試卷及答案
評論
0/150
提交評論