Android应用程序开发——安卓应用开发介绍
这是网易公开课 密西西比河谷州立大学: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应用程序开发——安卓应用开发介绍相关推荐
- 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 4
前文: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 3 导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The E ...
- 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 7
前文: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 6 导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The E ...
- 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 8
前文: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 7 导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 ...
- 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 1
前言 由于笔者操作不当,将项目搞崩了,所以打算重写一遍,记下开发过程,作为学习记录.此软件能实现最普通的单词查询功能,也有启动动画.登录注册之类的功能,但笔者目前能力有限,未能将其完善,这是初学阶段的 ...
- 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 9
前文: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 8 导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The E ...
- 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 3
前文: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 2 导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The E ...
- 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 5
前文: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 4 导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The E ...
- 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 6
前文: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 5 导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The E ...
- 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 2
前文: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 1 导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The ...
- 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 The End 导航页及收尾工作
导航: 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 1 桃词典 Peach Dictionary 简易英语词典app开发 安卓软件开发 Part 2 桃词 ...
最新文章
- 函数式编程语言python-函数式编程
- Exchange 2013恢复已禁用用户邮箱
- 【杂谈】为什么有三AI自断财路,从来不接广告
- .Net Discovery系列之十二-深入理解平台机制与性能影响(下)
- sqlplus连接不上oracle,环境变量设置错误导致sqlplus 连接不上oracle
- Tomcat(Windows)
- Scikit-learn:Feature selection特征选择和学习
- 【心电信号】基于matlab Simulink胎儿心电信号提取【含Matlab源码 1550期】
- jsplumb流程图demo
- BMZCTF misc1
- 【王者荣耀】入门战斗经验
- 如何提高阅读源代码能力
- 南京大学学生用7000张照片算出院系“平均脸”
- 任天堂网站“要求的内容有误”解决方法
- 蒋志平从零到亿的创业路
- Unity游戏开发程序员学习线路图及技能提升指南
- VC驿站《VC++网络编程班》开课啦!
- elementUI中el-radio-group的使用
- Tomcat 配置数据源
- pandas如何统计均线、移动平均线的方法rolling总结
热门文章
- 计算机二级Python题目整理(3)
- leetcode 517. Super Washing Machines 超级洗衣机 + 传递衣服 + 发现规律
- html cookie登陆,简单操作 Cookie 注册登录
- proteus矩阵按键计算机,矩阵键盘检测Proteus仿真电路图这里将16个按键按照4*4排列...
- [Android] Android 手机下 仿 今日头条 新闻客户端
- 安装Proxmox VE系统报错
- 第121章 SQL函数 RPAD
- APIO2015总结
- apio2018划水记
- Vue通过 Babel 显式转译一个node_modules依赖