版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章
Android系统概述CONTENTS目录02
什么是Android01
智能手机03
Android系统架构04
Android16新特性介绍智能手机011.1.1什么是智能手机什么是智能手机智能手机的起源最早可追溯至1973年摩托罗拉DynaTAC原型机的诞生,人们普遍以2007年苹果iPhone3G的发布作为现代智能手机的普及开端,随着这些年来智能手机的飞速发展,智能手机的内涵也在不断深入,本书认为现如今的智能手机应该融合最新的操作系统、计算机网络、大数据与云计算,以及人工智能等相关技术前沿。基于上述给出智能手机的描述,智能手机(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手机把网络、个人电脑和手机的优势集于一身,让人们可以随时随地享受到想要的体验。”3.PalmOSPalmOS是Palm公司开发的专用于PDA上的一种操作系统,这是PDA上的霸主,一度占据了90%的PDA市场的份额。虽然其并不专门针对于手机设计,但是PalmOS的优秀性和对移动设备的支持同样使其能够成为一个优秀的手机操作系统。Palm操作系统是多任务的,但每次只允许一个应用程序的打开,多个应用程序不能同时运行,这使得其运行速度很快,具有较好的实用性。但不适应需要多应用程序运行的场合。4.BlackBerryOSBlackBerryOS是RIM公司(ResearchInMotion)专用的操作系统。“黑莓”(Blackberry)移动邮件设备基于双向寻呼技术。该设备与RIM公司的服务器相结合,依赖于特定的服务器软件和终端,兼容现有的无线数据链路,实现了遍及北美、随时随地收发电子邮件的梦想。这种装置并不以奇妙的图片和彩色屏幕夺人耳目,甚至不带发声器。黑莓是目前在美国、加拿大地区相当流行的无线收发电子邮件的软件,它将软件客户端结合在移动电话、PDA及其他通信终端上,用户可以通过其无线装置来安全地访问电子邮件、企业数据、Web以及进行企业内部的语音通话。BlackBerryOS具有多任务处理能力,并支持特定的输入装置,如滚轮、轨迹球、触摸板以及触摸屏等。BlackBerry平台最著名的莫过于它处理邮件的能力。该平台通过MIDP1.0以及MIDP2.0的子集,在与BlackBerryEnterpriseServer连接时,以无线的方式激活并与MicrosoftExchange,LotusDomino或NovellGroupWise同步邮件、任务、日程、备忘录和联系人。该操作系统还支持WAP1.2。5.AndroidAndroid是由Google主导开发,基于现代Linux内核的开源移动操作系统,它已从最初的智能手机平台,发展成为驱动全球数十亿台智能设备的核心系统,涵盖手机、平板、可穿戴设备、电视、汽车信息娱乐系统以及物联网设备等广泛领域。作为一款以Linux为基础的开放源码操作系统,Android主要应用于各类便携设备。Linux操作系统的嵌入式版本是专门为各种资源受限的嵌入式终端产品设计的,开放的源代码和免费使用的特点使得Linux相关应用的开发人员能够专注于业务的拓展。现如今,越来越多的智能手机开发商也倾向于研发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设备。
媒体库。基于PacketVideo的OpenCORE,这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG。
界面管理。管理访问显示子系统,并且为多个应用程序提供2D和3D图层的无缝融合。
LibWebCore。新式的Web浏览器引擎,支持Android浏览器和内嵌的Web视图。
SGL。一个内置的2D图形引擎。
3D库。基于OpenGLES1.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。“minimumSDK”设置为“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提供了更丰富的功能。科技在MainActivity的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获得焦点,显示给用户。“后退栈”遵循“后入先出”的原则。当新启动的Activity被使用完毕,用户单击“Back”按钮时,当前的Activity会被销毁,而原先的Activity会被从“后退栈”的栈顶弹出并且激活。当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时,该方法被调用,暂停或收回CPU和其他资源时调用。
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院医疗废物管理工作存在问题的改进措施
- 2025下半年麻醉药品培训试题含答案
- 公共场所机械伤害初期处置方案
- 2025年医保知识考试试题库医保政策解读与试题政策法规考试试题库(含答案)
- 2026年健康管理师考试题库及答案
- 敬老院突发群体冲突应急演练脚本
- 管道安装企业检修员日常检查安全操作规程
- 电大《园艺基础》2022-2023期末试题及答案
- 工人技术等级岗位考试(农艺工中级)模拟题及答案
- 企业情感营销中故事叙述对消费者态度改变的影响研究报告
- JG/T 13-1999门式钢管脚手架
- 内热针治疗技术临床应用规范
- JJG633-2024气体容积式流量计检定规程
- 2024年云南省昆明市官渡区小升初数学试卷(含答案)
- 《PLC应用项目工单实践教程》课件 模块6 函数、函数块、数据块及应用
- 骨人体解剖生理学讲解
- GB/T 44948-2024钢质模锻件金属流线取样要求及评定
- 备考2025高考物理“二级结论”精析与培优争分练讲义-01 共点力平衡(教师版)
- 广联达GTJ建模进阶技能培训
- JTGT B07-01-2006 公路工程混凝土结构防腐蚀技术规范
- 涉密人员违规处罚
评论
0/150
提交评论