失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Android应用程序开发——安卓应用开发介绍

Android应用程序开发——安卓应用开发介绍

时间:2020-06-12 15:31:37

相关推荐

Android应用程序开发——安卓应用开发介绍

这是网易公开课 密西西比河谷州立大学: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应用程序开发——安卓应用开发介绍》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。