这是网易公开课 密西西比河谷州立大学:Android应用程序开发 的笔记。

视频地址:http://v.163.com/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。比如播放器例子。

广播接收器(Broadcast receiver):Broadcast receiver 接收广播并做出反应。它也没有用户界面,但能调用有用户界面的活动。

内容提供器(Content Provider):content provider是用来管理应用程序数据的。它可以让一个应用的数据用于设备上的其他应用,也可用于该应用本身,即我们能使用内容提供器访问其数据。

数据一般存于SQLite数据库中。安卓还支持文件系统的概念。它拥有一些键值对所组成的首选项。

也就是说,本地数据存储有几种不同的方式。

如联系人应用的联系人数据库。

以上是安卓应用中的四大构建块。

每个安卓进程都以单独的Linux进程运行。

每个应用安装后都具有唯一用户ID。

从用户界面来看,安卓会管理所谓的“活动栈”。这些活动将形成活动栈,安卓系统会管理所有的细节问题。

下图是安卓活动的生命周期图:

在活动基类中存在钩子函数,在状态转换时,由底层框架调用,如onCreate() hook function。

当应用不在前台,但占用大量资源时,系统会终止进程。

当内存空间很低时,安卓系统会选择性地停止那些不在前台,但占用内存的应用。当用户再次回到该应用时,需要重新onCreate,所以在停止时需要存储应用状态。

程序如何从一个活动转移到另一个活动。在安卓中用intent来处理。

intent是一个活动传给另一个的异步信息。一般的intent包含有两段数据,首先是动作信息,然后是该动作所需数据的实际URL。在安卓中还分为显性意图和隐性意图。在显性意图中,活动中明确了另一个活动是什么,可以在意图中硬编码,明确想转到的活动是什么。

但更一般的方式是隐性意图。只说明要做的动作和所需数据。在编写活动时会编写意图过滤器(intent filter),声明哪个活动能够运行相应的意图,然后系统会将控制转给此活动。比如用浏览器浏览网页。

Android应用程序开发——安卓应用开发介绍相关推荐

  1. 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 4

    前文: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 3 导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The E ...

  2. 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 7

    前文: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 6 导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The E ...

  3. 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 8

    前文: ​​​​​​桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 7 导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 ...

  4. 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 1

    前言 由于笔者操作不当,将项目搞崩了,所以打算重写一遍,记下开发过程,作为学习记录.此软件能实现最普通的单词查询功能,也有启动动画.登录注册之类的功能,但笔者目前能力有限,未能将其完善,这是初学阶段的 ...

  5. 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 9

    前文: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 8 导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The E ...

  6. 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 3

    前文: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 2 导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The E ...

  7. 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 5

    前文: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 4 导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The E ...

  8. 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 6

    前文: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 5 导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The E ...

  9. 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 2

    前文:  桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 1 导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The ...

  10. 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The End 导航页及收尾工作

    导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 1 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 2 桃词 ...

最新文章

  1. spyder 断点调试python代码
  2. HTTP基础认证Basic Authentication
  3. tcp和udp的区别?
  4. LCS(最长公共子串)系列问题
  5. OpenCASCADE绘制测试线束:检查器命令之Inspector
  6. Zookeeper选举算法( FastLeader选主)
  7. 代码 | 一天一点代码坏味道(1)
  8. apache hadoop_使用Apache Hadoop计算PageRanks
  9. 重造车轮—基于JQ的商品展示放大镜
  10. 策略模式(headfirst设计模式学习笔记)
  11. Python3安装cx_Oracle连接oracle数据库实操总结
  12. MATLAB图形界面设计(上)
  13. Delphi插件创建、调试与使用应用程序扩展
  14. 如何给网站添加支付宝支付功能
  15. 循环赛日常表算法(N可为奇数和偶数)
  16. 戴尔vStart:加快虚拟化,并马上应用戴尔私有云
  17. spring-boot集成elastic-job 并实现http类型作业
  18. 基于方格网法的填挖方量计算(C++)
  19. Arcgis js featureLayer加载完成之后,对其加载的要素重新定义样式
  20. 如何倾听客户之声?你需要的不仅仅是调研

热门文章

  1. AI技术存在的伦理争议
  2. Oracle 利用lead、lag函数查询已有记录的下一条、上一条记录
  3. StopWatch方法详解
  4. 【JavaScript】颗粒归仓
  5. 密码学之生日攻击 离散对数问题求解 python实现
  6. postgresql后台查询删除与垃圾清理
  7. 大一课设ktv点歌系统c语言
  8. 从零开始搭建公司微服务架构技术栈,这套架构绝了...
  9. 链接校园网内远程虚拟机的操作方法
  10. 印象笔记与有道云笔记