第一层:Linux操作系统和驱动(Linux kernel):由C语言实现。
Android核心系统服务依赖于Linux2.6内核,包括:安全性、内存管理、进程管理、网络协议、驱动模型。Linux内核也作为硬件和软件栈之间的抽象层。
除了标准的Linux内核外,Android还增加了内核的驱动程序:Binder(IPC)驱动、显示驱动、输入设备驱动、音频系统驱动、摄像头驱动、WiFi驱动、蓝牙驱动、电源管理。
第二层:本地框架和Java运行环境(LIBRARIES 和 ANDROID RUNTIME)
本地框架是有C/C++实现。包含C/C++库,被Android系统中不同组件使用,它们通过Android应用程序框架为开发者进行服务。
系统C库:(libc)从BSD继承过来的标准的C系统函数库,专门是为基于嵌入式Linux的设备定制的库。
多媒体库:基于PackerVideo的OpenCore;该库支持多种常用的音频、视频格式回放和录制,支持多种媒体格式的编和解码格式。
Suface Manager:显示子系统管理器,并且为多个应用程序提供2D和3D图层的无缝融合。
LibWebCore:一个最新的Web浏览器引擎,支持Android浏览器,以及一个可嵌入式的Web视图。
SGL:Skia图形库,底层的2D图形引擎。
3D libraries:基于OpenGL ES1.0 API的实现;该库可以使用硬件3D加速(如果可用),或者使用高度优化的3D软加速。
FreeType:位图(bitmap)和矢量(vector)字体显示。
Android运行环境(ANDROID RUNTIME):提供了Java编程语言核心库的大多数功能,由Dalvik Java虚拟机和基础的Java类库组成。
Dalvik是Android中使用的Java虚拟机,每个Android应用程序都在自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。
Dalvik被设计成一个可以同时高效运行多个虚拟机实例的虚拟系统。执行后缀名为.dex的Dalvik可执行文件,该格式的文件
针对小内存使用做出了优化。同时虚拟机是基于寄存器的,所有的类都是有Java编译器编译,然后通过SDK中的“dx”工具
转化为.dex格式由虚拟机执行。
Dalvik虚拟机依赖于Linux内核的一些功能,比如线程机制和底层内存管理机制。
第三层:Android应用框架(ANDROIDFRAMEWORK)
在Android系统中,开发人员也可以完全访问核心应用程序所使用的API框架。
第四层:Android应用程序(APPLICATIONS)
注意:Android应用程序都是有Java语言编写的。用户开发的Android应用程序和Android的核心应用程序是同一层次的,它们都是基于Android的系统API构建的。
每一个Android中应用的都是以linux中的进程形式运行,都有唯一的ID号。系统会管理所有的活动栈,生成堆栈。
4大组件详解:
1.Activity活动
呈现用户界面,从Activity基类中继承,一个操作就是一个activity(如列出一个电话表让用户选择上面的人)
2.Service服务
没有用户界面,响应Activity的选择,从Service基类中继承扩展,长时间后台运行,即使Activetiy退出了还能运行。(如音乐播放器在后台播放,就需要用到Service)
3.Broadcast Recevier
接受和响应广播,从BroadcastRecevier基类中继承扩展,应用也可以发出广播。(如下载完后通知其他应用,轮到它们使用网络了,广播过滤器的概念就是帮助应用APP过滤一些无用的广播,在Intent中用到)
4.Content Provider
管理应用数据,将应用的特定数据提供给其他应用。从ContentProvider基类中继承扩展。数据可以放在文件系统,或者数据库,任何地方。(如Android默认有一个Content Provider管理联系人数据库,给其他应用提供数据支持)
生命周期
Android应用程序不能控制它们自己的进程的生存期;而Android运行时可以管理每一个应用程序的进程,也就是说,它也可以管理进程内的每个活动。
一个 Android 程序的进程是何时被系统结束的呢?通俗地说,一个即将被系统关闭的程序是系统在内存不足(low memory)时,根据“重要性层次”选出来的“牺牲品”。一个进程的重要性是根据其中运行的部件和部件的状态决定的。各种进程按照重要性从高到低排列如 下:
1. 前台进程。这样的进程拥有一个在屏幕上显示并和用户交互的 activity 或者它的一个IntentReciver 正在运行。这样的程序重要性最高,只有在系统内存非常低,万不得已时才会被结束。
2. 可见进程。在屏幕上显示,但是不在前台的程序。比如一个前台进程以对话框的形式显示在该进程前面。这样的进程也很重要,它们只有在系统没有足够内存运行所有前台进程时,才会被结束。
3. 服务进程。这样的进程在后台持续运行,比如后台音乐播放、后台数据上传下载等。这样的进程对用户来说一般很有用,所以只有当系统没有足够内存来维持所有的前台和可见进程时,才会被结束。
4. 后台进程。这样的程序拥有一个用户不可见的 activity。这样的程序在系统内存不足时,按照 LRU 的顺序被结束。
5. 空进程。这样的进程不包含任何活动的程序部件。系统可能随时关闭这类进程。
Activity有三种基本状态:
- Active:处于屏幕前景(当前task的栈顶Activity处于Active状态),同一时刻只能有一个Activity处于Active状态;
- Paused状态:处于背景画面画面状态,失去了焦点,但依然是活动状态;
- stopped:不可见,但依然保持所有的状态和内存信息。
- void onCreate(Bundle savedInstanceState)
- void onStart()
- void onRestart()
- void onResume()
- void onPause()
- void onStop()
- void onDestroy()
void onCreate(Bundle savedInstanceState) void onStart() void onRestart() void onResume() void onPause() void onStop() void onDestroy()
这些都是钩子函数,你可以重写他们。所有的activity在首次运行时必须实现onCreate()方法来初始化安装。activity可以实现onPause()来提交数据改变,然后准备停止与用户的交互。
1、onCreate()
Acitivity首次创建时被调用。用于设置Acitivity的布局文件,绑定按钮监听器等一些普通静态操作。
2、onStart()
Acitivity对用户可见时被调用。
3、onResume()
Acitivity获得用户焦点,即用户可操作该Acitivity时被调用。
4、onPause()
应用程序启动了其它Acitivity时被调用。一般用于保存当前Acitivity中的数据。
5、onStop()
Acitivity不可见时被调用。
6、onRestart()
已停止的Acitivity重新启动时被调用。
7、onDestroy()
调用Acitivity的finish()方法或Android系统资源不足时被调用。
Activity starts -->onCreate()-->onStart()-->onResume()-->activity is running--another activity comes in front of this activity-->onPause()--the activity is no longer visivble-->onStop()-->onDestroy()-->activity is shut down
意图Intent:
android.content.Intent实例化。描述要执行的操作(如发送邮件),或广播(如摄像头已经被激活),从一个Activity转到另一个Activity的方法。通过向另一个Activity传送两段数据,动作Action和该处理动作所需数据的URL。
通常用的是隐式Intent,显式一般只在应用内部传递消息。
Intent filter过滤器让组件能接收到其所公告的类型的隐式Intent。如果组件没有过滤器则只接受显式Intent。
隐性意图:只表示要干的事,不指明Activity对象。如果存在多个适合的Activity则系统会出现列表让用户选择(如打开网页,出现选择浏览器的提示框)。
显性意图:让另一个Activity干某件事,指明Activity的名称。
http://www.tuicool.com/articles/NBnYJf
相关推荐
根据提供的文件内容,本部分将详细说明与密西西比河谷州立大学的《Android应用程序开发》课程相关的知识点。 首先,通过网易公开课链接***,我们可以了解到密西西比河谷州立大学提供的课程可以通过网易公开课平台...
这份资源,"密西西比河谷州立大学:Android应用程序开发 源代码",是来自网易公开课的一个课程资料,提供了实际的编程实例,帮助学习者通过实践提升技能。 在Android应用开发中,源代码是理解程序运行机制的关键。...
密西西比河谷州立大学提供的这个"Android应用程序开发源代码"资源,无疑为学习者提供了一个宝贵的实践平台,能够加深对Android开发的理解,并且通过配合网上的课程,学习效果将更上一层楼。 首先,Android开发基于...
MTSU - 密西西比州立大学 - **网址**: http://www.mtsu.ceu/-storm/ - **简介**: 提供了软件测试相关的课程和研究资料。 ### 30. PSQT Conference - **网址**: http://www.psqtcomference.com/ - **简介**: 一个...
【国外大学免费硕博全文数据库】是一类提供学术资源的重要平台,主要包含硕士和博士研究生的研究论文全文。这些数据库通常由各个国家的知名大学维护,为全球学者提供了免费访问高质量学术文献的机会,促进了知识的...
- MPICH是MPI最流行的非专利实现之一,由美国Argonne国家实验室和密西西比州立大学共同开发,因其良好的可移植性而广受欢迎。 - **为什么选择MPI?** - **高可移植性**:MPI支持多种操作系统和硬件平台,这意味着...
LibGuides一个与MSU libGuides API交互的React应用程序该项目是通过引导的。它与以下第三方服务接口: Firebase身份验证Firebase / Firestore提供用户数据和收藏夹指南用于用户个人资料图像的Gravatar MSU libGuide ...
密西西比州立大学的学生们通过这份作业,能够深入理解测试的重要性以及如何实践。 Python作为一门广泛使用的编程语言,其简洁明了的语法使得编写测试用例变得相对简单。在Python中,我们可以利用标准库中的`...
【总结】密西西比河三角洲的洪水风险管理是一项复杂而紧迫的任务,需要结合科技进步、政策制定和跨部门合作。通过实施多条防线战略、改进防洪工程、恢复湿地、优化土地利用和调整淡水与泥沙流动,可以有效应对洪水...
通过建立密西西比河流域1950年至2010年的分位数回归模型,小波相关模型和Mann-Kendall相关模型,对土壤水分与温度之间的关系进行了评估。 结果表明,首先,异常温度与上,下盆地的土壤湿度异常呈负相关,但两者之间...
CIC代码基 代码改进委员会-肯塔基州(KY)的结构化HTML状态代码 该存储库由UniCourt代表Public.Resource.Org创建。 所有这些工作都是在公共领域,... 密西西比州(MS): : 田纳西州(TN): : 乔治亚(GA): :
1. 语文学习与同步训练:文件标题和描述揭示了这是一份针对八年级学生的语文同步训练材料,涉及《密西西比河风光》这篇文章的学习。 2. 课文理解:文章要求学生理解《密西西比河风光》的内容,包括作者描绘的风景...
【洪水风险管理】洪水风险管理是针对三角洲地区尤其是密西西比河三角洲面临的重大挑战,因为这些区域在自然状态上动态且易变,同时承载着重要的经济活动。随着气候变化,如海平面上升和更频繁的风暴潮,以及人口增长...
功能科客户的CRUD 克鲁德·德·维乌库洛斯服务的CRUD 印度/密西西比州/阿纳省的定量服务局Dia /Mês/ ano的休闲娱乐场所Vocêpode visualizar o projeto em: ://bruno-andrade.github.io/lavajato/ 阿塞斯·佩洛...
密西西比河是全球最重要的河流之一,它不仅在美国内陆水运体系中占据核心地位,而且在全球范围内也被视为河流资源综合开发利用的典范。密西西比河的成功在于它能够有效地平衡不同资源的利用,如水资源、能源、航运...
MPI 1.1:1995,MPICH:是MPI最流行的非专利实现,由Argonne国家实验室和密西西比州立大学联合开发,具有更好的可移植性。 MPI 1.2-2.0:动态进程、并行I/O、远程存储访问、支持F90和C++(1997)。 MPI 2.2:2009...
他的笔名“马克·吐温”来源于他在密西西比河当水手时的专业术语,意指测量水深的一种表达方式。马克·吐温以其幽默与讽刺闻名,是美国文学史上不可或缺的一位大师。 - **代表作**包括: - **《百万英镑》**:一部...
7. 密西西比河的地理覆盖范围:跨越多个州和省份,对北美大陆有深远影响。 8. 19世纪至20世纪的洪水管理措施:通过工程手段减少洪水灾害。 这些内容可以作为学习英语听力、了解美国历史、地理和水利工程等方面的...