这是网易公开课 密西西比河谷州立大学:Android应用程序开发的笔记。
视频地址:/special/opencourse/developingandroidapplications.html
这个课程有六节课。课程目标是在这六节课后让学习者对android平台有一个比较好的了解,兼作复习。
概述
android是一个为移动设备准备的软件栈,它包括一个Linux操作系统和一些中间件,还附带一些关键性的应用,比如联系人管理、地图应用、浏览器等等。
安卓由谷歌开发和维护,它是一个开源项目。
下面的这张图描述了安卓平台的结构。
安卓结构可分为4层,应用层:预装一些应用,比如联系人管理。开发者可以在这层开发自己的应用。第二层是android框架层,提供开发这一些应用接口,其中有一系列不同的子框架,如处理窗口,处理电话事件的框架等。
框架本身是在一系列库之上写出来的。也就是绿色这层,库内容由C和C++编写,这些库是自带的。有一些由谷歌实现,一些是开源集成项目。如SQLite和WebKit等。
安卓运行时则是基于Dalvik虚拟机。由谷歌实现。
所有这些都建于Linux内核之上。
你开发的应用和系统自带的应用都是基于应用框架,没有本质差别。也就是说谷歌安卓的API都是公开的。
Dalvik虚拟机介绍:
移动设备的计算和存储资源有限,于是谷歌开发了专门的虚拟机。
Dalvik是基于寄存器的虚拟机而不是基于堆栈机器。总体而言,它将提供更高效的指令流。
每条指令上所得到的语义内容将会更多。
一个for循环由Dalvik转为汇编语言后的代码行数要显著少于一般的Java虚拟机的数量。
实际的结构块和基本的安卓概念
活动(Activity):代表用户正在做某事,这通常呈现在同一屏幕上,但在屏幕上可以有多个视图。
视图:视图View是安卓的GUI基类。用来在区域内描绘矩形,以及对屏幕区域发生的事件做出响应。它是图形化及交互的基本抽象。
建立新活动则通过扩展Activity类实现。
从Activity中派生新类。
服务(service):service是没有用户界面的应用或应用组件,它在后台运行。使用时同Activity。比如播放器例子。
广播接收器(Broadcastreceiver):Broadcastreceiver接收广播并做出反应。它也没有用户界面,但能调用有用户界面的活动。
内容提供器(ContentProvider):contentprovider是用来管理应用程序数据的。它可以让一个应用的数据用于设备上的其他应用,也可用于该应用本身,即我们能使用内容提供器访问其数据。
数据一般存于SQLite数据库中。安卓还支持文件系统的概念。它拥有一些键值对所组成的首选项。
也就是说,本地数据存储有几种不同的方式。
如联系人应用的联系人数据库。
以上是安卓应用中的四大构建块。
每个安卓进程都以单独的Linux进程运行。
每个应用安装后都具有唯一用户ID。
从用户界面来看,安卓会管理所谓的“活动栈”。这些活动将形成活动栈,安卓系统会管理所有的细节问题。
下图是安卓活动的生命周期图:
在活动基类中存在钩子函数,在状态转换时,由底层框架调用,如onCreate() hookfunction。
当应用不在前台,但占用大量资源时,系统会终止进程。
当内存空间很低时,安卓系统会选择性地停止那些不在前台,但占用内存的应用。当用户再次回到该应用时,需要重新onCreate,所以在停止时需要存储应用状态。
程序如何从一个活动转移到另一个活动。在安卓中用intent来处理。
intent是一个活动传给另一个的异步信息。一般的intent包含有两段数据,首先是动作信息,然后是该动作所需数据的实际URL。在安卓中还分为显性意图和隐性意图。在显性意图中,活动中明确了另一个活动是什么,可以在意图中硬编码,明确想转到的活动是什么。
但更一般的方式是隐性意图。只说明要做的动作和所需数据。在编写活动时会编写意图过滤器(intentfilter),声明哪个活动能够运行相应的意图,然后系统会将控制转给此活动。比如用浏览器浏览网页。
如果觉得《Android应用程序开发——安卓应用开发介绍》对你有帮助,请点赞、收藏,并留下你的观点哦!