《Android 应用案例开发大全(第3版)》——第1.2节掀起Android的盖头来

简介:

本节书摘来自异步社区《Android 应用案例开发大全(第3版)》一书中的第1章,第1.2节掀起Android的盖头来,作者 吴亚峰 , 苏亚光 , 于复兴,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.2 掀起Android的盖头来
自从Android发布以来,越来越多的人关注Android的发展,越来越多的开发人员在Android系统平台上开发应用。那么,是什么使Android备受青睐、在众多移动平台中脱颖而出呢?

1.2.1 选择Android的理由
Android基于Linux技术开发,由操作系统、用户界面和应用程序组成,允许开发人员自由获取、修改源代码,也就是说这是一套具有开源性质的移动终端解决方案,具有开放性、平等性、无界性、方便性以及硬件的丰富性等特点。下面对以上各个优点进行简单介绍。

开放性。
提到Android的优势,首先想到的一定是真正的开放,其开放性包含底层的操作系统以及上层的应用程序等。Google与开放手机联盟合作开发Android的目的就是建立标准化、开放式的移动软件平台,在移动产业内形成一个开放式的生态系统。

平等性。
在Android的系统上,所有的应用程序完全平等,系统默认自带的程序与自己开发的程序没有任何区别,程序开发人员可以开发个人喜爱的应用程序来替代系统的程序,构建个性化的Android手机系统,这些功能在其他的手机平台是没有的。

在开发之初,Android平台就被设计成由一系列应用程序组成的平台,所有的应用程序都运行在一个虚拟机上面。该虚拟机提供了系列应用程序之间和硬件资源通信的API。这成就了在Android的系统上,所有应用程序完全平等。

无界性。
Android平台的无界性表现在应用程序之间的无界,开发人员可以很轻松地将自己开发的程序与其他应用程序进行交互,比如应用程序需要播放声音的模块,而正好你的手机中已经有一个成熟的音乐播放器,此时就不需要再重复开发音乐播放功能,只需简单地加上几行代码即可将成熟的音乐播放功能添加到自己的程序中。

方便性。
在Android平台中开发应用程序是非常方便的,如果对Android平台比较熟悉,想开发一个功能全面的应用程序并不是什么难事。Android平台为开发人员提供了大量的实用库及方便的工具,同时也将百度地图等功能集成了进来,只需简单的几行调用代码即可将强大的地图功能添加到自己的程序中。

硬件的丰富性。
由于平台的开放,众多的硬件制造商推出了各种各样的产品,而这些产品功能上的差异并不影响数据的同步与软件的兼容,例如,原来在诺基亚手机上的应用程序,可以很轻松地被移植到摩托罗拉手机上使用,且联系人、短信息等资料更是可以方便地转移。

1.2.2 Android的应用程序框架
从软件分层的角度来说,Android平台由应用程序、应用程序框架、Android运行时库层以及Linux内核共4部分构成,本节将分别介绍各层的功能,使读者对Android平台有一个大致的了解,便于以后对Android应用程序的开发。其分层结构如图1-1所示。


90f8d5bc82cbdbbffb6802d8b586333210c849bf

1.应用程序层
本层的所有应用程序都是用Java编写的,一般情况下,很多应用程序都是在同一系列的核心应用程序包中一起发布的,主要有拨号程序、浏览器、音乐播放器、通讯录等。该层的程序是完全平等的,开发人员可以任意将Android自带的程序替换成自己的应用程序。

2.应用程序框架层
对于开发人员来说,接触最多的就是应用程序框架层。该应用程序的框架设计简化了组件的重用,其中任何一个应用程序都可以发布自身的功能供其他应用程序调用,这也使用户可以很方便地替换程序的组件而不影响其他模块的使用。当然,这种替换需要遵循框架的安全性限制。

该层主要包含以下9部分,如图1-2所示。


addceb003d48b550bc59594950e11876e667b5a3

活动管理(Activity Manager):用来管理程序的生命周期,以及提供最常用的导航回退功能。
窗口管理(Window Manager):用来管理所有的应用程序窗口。
内容供应商(Content Providers):通过内容供应商,可以使一个应用程序访问另一个应用程序的数据,或者共享数据。
视图系统(View System):用来构建应用程序的基本组件,包括列表、网格、按钮、文本框,甚至是可嵌入的Web浏览器。
包管理(Package Manager):用来管理Android系统内的程序。
电话管理(Telephony Manager):所有的移动设备的功能统一归电话管理器管理。
资源管理(Resource Manager):资源管理器可以为应用程序提供所需要的资源,包括图片、文本、声音、本地字符串,甚至是布局文件。
位置管理(Location Manager):该管理器是用来提供位置服务的,如GPRS定位等。
通知管理(Notification Manager):主要对手机顶部状态栏进行管理,开发人员在开发Android程序时会经常使用,如来短信提示、电量低提示,还有后台运行程序的提示等。
3.Android运行时库
该层包含两部分,程序库及Android运行时库。程序库为一些C/C++库,这些库能够被Android系统中不同的应用程序调用,并通过应用程序框架为开发者提供服务。而Android运行时库包含了Java编程语言核心库的大部分功能,提供了程序运行时所需调用的功能函数。

程序库主要包含的功能库如图1-3所示。

libc:一个从BSD继承来的标准C系统函数库,是专门针对移动设备优化过的。
Media Framework:它基于PacketVideo公司的OpenCORE,支持多种常用音频、视频格式回放和录制,并支持多种图像文件,如MPEG-4、H.264、MP3、AAC、AMR、JPG、PNG等。
Surface Manager:它主要管理多个应用程序同时执行时,各个程序之间的显示与存取,并且为多个应用程序提供了2D和3D图层无缝的融合。
SQLite:所有应用程序都可以使用的轻量级关系型数据库引擎。
WebKit:这是一套最新的网页浏览器引擎,可同时支持Android浏览器和一个可嵌入的Web视图。
OpenGLIES:基于OpenGL ES 1.0 API标准实现的3D绘制函数库,该函数库支持软件和硬件两种加速方式执行。
FreeType:提供位图(bitmap)和矢量图(vector)两种字体显示。
SGL:提供2D图形绘制的引擎。
Android运行时库包括核心库及Dalivik虚拟机,如图1-4所示。

核心库(Core Libraries):该核心库包括Java语言所需要的基本函数以及Android的核心库。与标准Java不一样的是,系统为每个Android应用程序提供了单独的Dalvik虚拟机来执行,即每个应用程序拥有自己单独的线程。
Dalvik虚拟机(Dalvik Virtual Machine):大多数的虚拟机(包括JVM)都是基于栈的,而Dalvik虚拟机则是基于寄存器的,它可以支持已转换为.dex格式的Java应用程序的运行。.dex格式是专门为Dalvik虚拟机设计的,更适合内存和处理器速度有限的系统。


a44a989bf30b29435008096ceeab68429c8d921b

4.Linux内核
Android平台中操作系统采用的是Linux 2.6内核,其安全性、内存管理、进程管理、网络协议栈和驱动模型等基本依赖于Linux。对于程序开发人员,该层为软件与硬件之间增加了一层抽象层,使开发过程中不必时时考虑底层硬件的细节。而对于手机开发商而言,对此层进行相应的修改即可将Android平台运行到自己的硬件平台之上。

相关文章
|
1天前
|
Java 编译器 Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【5月更文挑战第1天】 在移动开发的世界中,性能优化始终是开发者关注的焦点。随着Kotlin的兴起,许多团队和开发者面临着一个选择:是坚持传统的Java语言,还是转向现代化、更加简洁的Kotlin?本文通过深入分析和对比Kotlin与Java在Android应用开发中的性能表现,揭示两者在编译效率、运行速度和内存消耗等方面的差异。我们将探讨如何根据项目需求和团队熟悉度,选择最适合的语言,以确保应用的高性能和流畅体验。
|
1天前
|
缓存 安全 Android开发
构建高效Android应用:采用Kotlin进行内存优化
【5月更文挑战第1天】随着移动设备的普及,用户对应用程序的性能要求越来越高。特别是对于Android开发者来说,理解并优化应用的内存使用是提升性能的关键。本文将探讨使用Kotlin语言在Android开发中实现内存优化的策略和技术。我们将深入分析Kotlin特有的语言特性和工具,以及它们如何帮助开发者减少内存消耗,避免常见的内存泄漏问题,并提高整体应用性能。
|
1天前
|
安全 Android开发 开发者
构建高效Android应用:采用Kotlin与Jetpack的实践指南
【4月更文挑战第30天】 在移动开发领域,随着技术的不断进步,为了提高应用的性能和用户体验,开发者们不断地探索新的工具和框架。对于Android平台而言,Kotlin语言以其简洁性和功能性成为了开发的首选。而Jetpack组件则提供了一套高质量的库、工具和指南,帮助开发者更轻松地构建高质量的应用程序。本文将探讨如何结合Kotlin语言和Jetpack组件来优化Android应用的开发流程,提升应用性能,并保证代码的可维护性和可扩展性。
|
1天前
|
Java 编译器 Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【4月更文挑战第30天】在Android开发领域,Kotlin作为一种现代化的编程语言,因其简洁性和功能性受到了开发者的广泛欢迎。尽管与传统的Java相比,Kotlin提供了诸多便利,但关于其性能表现的讨论始终未息。本文将深入分析Kotlin和Java在Android平台上的性能差异,通过实际测试数据揭示两种语言在编译效率、运行速度以及内存占用方面的具体表现,并探讨如何利用Kotlin的优势来提升Android应用的整体性能。
|
2天前
|
移动开发 调度 Android开发
构建高效Android应用:Kotlin协程的实践之路
【4月更文挑战第30天】 在移动开发领域,性能优化与流畅的用户体验始终是开发者追求的目标。随着Kotlin语言在Android开发中的普及,其提供的协程特性成为了解决异步编程问题的有力工具。本文将通过深入分析Kotlin协程的原理与实践,展示如何在Android应用中利用协程提升响应速度和处理效率,同时保证代码的简洁性和可维护性。我们将从基本概念出发,逐步深入到协程的高级使用场景,帮助开发者构建更加高效的Android应用。
|
2天前
|
移动开发 Java Android开发
构建高效Android应用:Kotlin协程的实践之路
【4月更文挑战第30天】在移动开发领域,随着用户需求的不断增长和设备性能的持续提升,实现流畅且高效的用户体验已成为开发者的首要任务。针对Android平台,Kotlin协程作为一种新兴的异步编程解决方案,以其轻量级线程管理和简洁的代码逻辑受到广泛关注。本文将深入探讨Kotlin协程的概念、优势以及在实际Android应用中的运用,通过实例演示如何利用协程提升应用性能和响应能力,为开发者提供一条构建更高效Android应用的实践路径。
|
2天前
|
存储 Java Android开发
安卓应用开发中的内存优化策略
【4月更文挑战第30天】在移动开发领域,尤其是安卓平台上,内存管理是影响应用性能和用户体验的关键因素。由于安卓设备的硬件资源有限,不合理的内存使用会导致应用响应缓慢、消耗过多电量甚至崩溃。本文将探讨针对安卓平台的内存优化技巧,旨在帮助开发者提高应用的性能和稳定性,从而提升用户满意度。我们将详细讨论内存泄漏的预防、合理的内存分配策略以及高效的内存回收方法。
|
2天前
|
安全 网络安全 Android开发
云端防御策略:融合云服务与网络安全的未来构建高效的Android应用:从内存优化到电池寿命
【4月更文挑战第30天】 随着企业加速向云计算环境转移,数据和服务的云端托管成为常态。本文探讨了在动态且复杂的云服务场景下,如何构建和实施有效的网络安全措施来保障信息资产的安全。我们将分析云计算中存在的安全挑战,并展示通过多层次、多维度的安全框架来提升整体防护能力的方法。重点关注包括数据加密、身份认证、访问控制以及威胁检测与响应等关键技术的实践应用,旨在为读者提供一种结合最新技术进展的网络安全策略视角。 【4月更文挑战第30天】 在竞争激烈的移动市场中,Android应用的性能和资源管理已成为区分优秀与平庸的关键因素。本文深入探讨了提升Android应用效率的多个方面,包括内存优化策略、电池
|
2天前
|
前端开发 Android开发 iOS开发
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
【4月更文挑战第30天】Flutter 框架实现跨平台移动应用,通过一致的 UI 渲染(Skia 引擎)、热重载功能和响应式框架提高开发效率和用户体验。然而,Android 和 iOS 的系统差异、渲染机制及编译过程影响性能。性能对比显示,iOS 可能因硬件优化提供更流畅体验,而 Android 更具灵活性和广泛硬件支持。开发者可采用代码、资源优化和特定平台优化策略,利用性能分析工具提升应用性能。
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
|
2天前
|
机器学习/深度学习 人工智能 缓存
安卓应用性能优化实践探索深度学习在图像识别中的应用进展
【4月更文挑战第30天】随着智能手机的普及,移动应用已成为用户日常生活的重要组成部分。对于安卓开发者而言,确保应用流畅、高效地运行在多样化的硬件上是一大挑战。本文将探讨针对安卓平台进行应用性能优化的策略和技巧,包括内存管理、多线程处理、UI渲染效率提升以及电池使用优化,旨在帮助开发者构建更加健壮、响应迅速的安卓应用。 【4月更文挑战第30天】 随着人工智能技术的迅猛发展,深度学习已成为推动计算机视觉领域革新的核心动力。本篇文章将深入分析深度学习技术在图像识别任务中的最新应用进展,并探讨其面临的挑战与未来发展趋势。通过梳理卷积神经网络(CNN)的优化策略、转移学习的实践应用以及增强学习与生成对