Android系统开发 教学大纲Word文档格式.docx

上传人:b****3 文档编号:7808656 上传时间:2023-05-09 格式:DOCX 页数:62 大小:435.59KB
下载 相关 举报
Android系统开发 教学大纲Word文档格式.docx_第1页
第1页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第2页
第2页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第3页
第3页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第4页
第4页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第5页
第5页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第6页
第6页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第7页
第7页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第8页
第8页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第9页
第9页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第10页
第10页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第11页
第11页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第12页
第12页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第13页
第13页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第14页
第14页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第15页
第15页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第16页
第16页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第17页
第17页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第18页
第18页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第19页
第19页 / 共62页
Android系统开发 教学大纲Word文档格式.docx_第20页
第20页 / 共62页
亲,该文档总共62页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Android系统开发 教学大纲Word文档格式.docx

《Android系统开发 教学大纲Word文档格式.docx》由会员分享,可在线阅读,更多相关《Android系统开发 教学大纲Word文档格式.docx(62页珍藏版)》请在冰点文库上搜索。

Android系统开发 教学大纲Word文档格式.docx

1.2.1Android系统平台五大特色

1.开放性

2.挣脱运营商的束缚

3.丰富的硬件选择

4.不受任何限制的开发商

5.无缝结合的Google应用

1.2.2Android的优势

1.Android系统的稳定性赢得了厂商的青睐

2.Android系统的开源特性使得厂商可以随意打上自己的印记

3.Android系统的免费特性

1.3Android环境的搭建

1.3.1安装AndroidSDK的最低硬件需求

1.3.2AndroidSDK软件开发组件

1.AndroidLinux系统内核

2.Android仿真器

3. 

Eclipse图形界面开发环境

4.Dalvik虚拟机器

5.Android除错工具

6.Android应用程序架构

1.3.3Android开发环境搭建

1.下载JavaJDK

2.EclipseIDE下载

3.AndroidSDK下载器

第2章Android的系统架构

1.Android系统架构

2.应用程序基本组件

3.应用程序生命周期

4.资源

5.AndroidManifest.xml文件

2.1Android的系统架构

Android作为一个移动设备的开发平台,其系统架构和其他操作系统一样,采用了分层的架构。

从架构图2-1看,android从高层到低层分为以下几个层次。

●应用程序层(Application)

●应用程序框架层(ApplicationFramework)

●各种库(Libraries)和运行环境(RunTime)

●linux核心层(OS)

图2-1Android系统架构图

2.1.1应用程序(Application)

Android的应用程序通常涉及用户界面和用户交互,这类程序是用户实实在在能感觉到的。

Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。

所有的应用程序都是使用JAVA语言编写的。

2.1.2应用程序框架(ApplicationFramework)

普通开发者可以使用Android基本应用程序使用的系统API,Android应用框架中的各个模块都可以被复用,各种服务也可以被复用,理解了这个机制,开发人员可以更好更轻松地开发出优秀的Android应用。

开发过程中常用到的基本框架组件如下:

●一组View(UI组件),这些UI组件包括Button(按钮),EidtView(文本框),TextView(标签),List(列表)等等,灵活运用这些组件可以快速方便的创建良好的用户交互界面。

●ContentProviders(内容提供者),听起来有点抽象,通俗的理解ContentProvider就是提供一种服务,通过这种服务应用程序之间可以实现数据的互相访问和共享,比如通讯录的存储就使用了这种服务,其它应用也可以访问通讯录中存储的联系人信息。

●ResourceManager顾名思义就是资源管理,android中的资源很多,包括图片,用户界面(Layoutxml),字体,颜色,UI组件的Id等等都可以称之为资源,这些丰富的资源,都是通过ResourceManager来统一进行管理。

●NotificationManager(消息通知管理),它在不影响用户正常操作和使用设备的时候在状态栏上提供消息的提示。

比如有短信来的时候,android自动会将这个消息提示在状态栏上,用户可以及时的看到。

●ActivityManager(活动管理),Activity管理着应用程序的生命周期,并且控制着应用的导航,扮演控制器的角色。

每个Activity类似于Windows应用中的一个wendow。

一般的应用都是通过一个个Activity交互构成的。

●WindowManager(窗口管理),管理所有启动的窗口。

●LocationManager(位置管理),用来管理地图服务的相关功能。

●TelephoneyManager(电话管理),用来管理有关的电话的相关功能。

●PackageManager(包管理),管理所有的安装在android系统内的应用程序。

2.1.3各种库(Libraries)和运行环境(RunTime)

这部分内容开始涉及底层,开发普通的应用不会直接对这个层进行操作。

以下是一些核心库。

●系统C库(libc),一个从BSD集成来的标准C系统函数库(libc)它是专门为基于嵌入式Linux的设备定制的。

●媒体库(MediaFramework),基于PackeVideoOpenCore,该库支持多种常用的音频,视频格式以及回放和录制,同时支持静态图像文件。

编码格式包括:

MPEG4、H.264,MP3、AAC、AMR、JPG、PNG。

●SurfaceManager对显示子系统的管理,并且为多个应用提供2D,3D图层的无缝融合。

●WebKit,一个最新的web浏览器引擎,用来支持Andiroid浏览器或者嵌入的web视图。

●SGL,底层的2D图形引擎。

●OPENGL|ES,基于OpenGLES1.0APIs实现,该库可以使用硬件3D加速或者使用高度优化的3D软加速。

●FreeType,位图(bitmap)和适量(vector)字图显示支持。

●SQLite,一个对所有应用程序可用,功能强大的轻量级关系型数据库引擎。

●CoreLibraries该核心库提供了Java编程语言核心库的大多数功能。

●DalvikVM,android平台的一个虚拟机,它相当于PC中Java的虚拟机JVM。

Android的各种库一般是以系统中间件的形式提供的,它们均有的一个显著特点就是与移动设备的平台的应用密切相关。

Android运行环境主要指的虚拟机技术——Dalvik。

Dalvik虚拟机和一般Java虚拟机(JavaVM)不同,它执行的不是Java标准的字节码,而是Dalvik可执行格式(.dex)的执行文件。

在执行过程中,每一个应用程序即一个进程(Linux的一个Process)。

二者最大的区别在于JavaVM是以基于栈的虚拟机(Stack-based),而Dalvik是基于寄存器的虚拟机(Register-based)。

显然,后者最大的好处在于可以根据硬件实现更大的优化,这更适合移动设备的特点。

Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。

2.1.4Linux内核

Android的核心系统服务依赖于Linux2.6内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。

Linux内核也同时作为硬件和软件之间的抽象层,使得应用程序开发人员无需关心硬件细节。

对于手机的开发商而言,如果想要Android平台运行到自己的硬件平台上就必须对Linux内核进行修改,通常要做的工作是为自己的硬件编写驱动程序。

2.2应用程序的基本组件

应用程序五大组件。

1.Activity

2.Service

3.BroadcastReceiver

4.ContentProvider

5.Intent

然而,并不是所有的应用程序都必须包含上面的五个部分,你的应用程序可以由上面的一个或几个来组建。

当你决定使用以上哪些组件来构建Android应用程序时,你应该将它们列在AndroidManifest.xml文件中,在这个文件中你可以声明应用程序组件以及它们的特性和要求。

2.2.1Activity简介

在Android程序中Activity代表了手机的一个屏幕,好比A应用中的一个网页,一个android应用相当于一个web站点。

窗口中的可视内容被一系列层次的视图(view)提供——派生自View类的对象(后续章节会详细介绍)。

视图就是activity与用户交互的地方。

例如,当用户触动一个显示小图片的视图时,会触发一些动作。

Android提供了很多现成的视图供你使用——包括按钮,文本框,滚动条,菜单项,复选框还有更多。

 

整个视图层次通过Activity.setContentView() 

方法放到activity的窗口上。

下图2-2显示了View的层次结构。

图2-2View的层次结构图

当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史堆栈中。

用户可以返回到历史堆栈中的前一个屏幕。

当屏幕不再使用时,还可以从历史堆栈中删除。

默认情况下,Android将会保留从主屏幕到每一个应用的运行屏幕。

同一应用中的每个Activity是相互独立的。

程序启动后显示的第一幅画面是应用程序的第一个Activity(默认窗口),而后可以根据需要从这个Activity启动另一个新的Activity。

每一个都是作为Activity基类的一个子类的实现。

有两个方法是几乎所有的Activity子类都实现的:

(1)onCreate(Bundle):

初始化你的活动(Activity),比如完成一些图形的绘制。

最重要的是,在这个方法里你通常将用布局资源(layoutresource)调用setContentView(int)方法定义你的UI,和用findViewById(int)在你的UI中检索你需要编程地交互的小部件(widgets)。

setContentView指定由哪个文件指定布局(main.xml),可以将这个界面显示出来,然后我们进行相关操作,我们的操作会被包装成为一个意图(Intent),然后这个意图对应有相关的activity进行处理。

(2)onPause():

处理当离开你的活动时要做的事情。

最重要的是,用户做的所有改变应该在这里提交(通常ContentProvider保存数据)。

2.2.2Service简介

Service没有可见的用户界面,但能够长时间运行于后台。

一个最好的例子是媒体播放器通过一个播放列表来播放歌曲。

这个播放器程序或许有一个或多个activity,来允许用户选择音乐和播放它们。

然而,音乐本身不能被activity处理,因为用户希望当他们离开播放器窗口去做其他的事情时,音乐仍然能够播放。

为了让音乐能够继续,媒体播放器的activity可以启动一个在后台运行的服务。

系统应该保证音乐服务运行,即使启动的activity窗口已经不在主屏幕上了。

所以,我们需要这样的机制——长时间在后台运行的Service。

Service运行于应用程序进程的主线程中,因此 

Service 

不会阻塞其他组件和用户界面。

是不能自己启动的,必须通过 

Context 

对象(如一个 

Activity 

)调用 

startService 

或 

bindService 

方法来启动(用这两种方法启动的 

的生命周期不同)。

2.2.3BroadcastReceiver简介

BroadcastReceiver 

是对发送出来的 

Broadcast 

进行过滤接收并响应的一类组件。

广播是一种同时通知多个对象的事件通知机制。

Android 

中的广播要么来自于系统,要么来自普通应用程序。

很多事件都可能导致系统广播,如手机所在时区发生变化,电池电量低,用户改变系统语言设置等。

来自普通应用程序,如一个应用程序通知其他应用程序某些数据已经下载完毕。

为了响应不同的事件通知,应用程序可以注册不同的 

所有的 

都继承自基类 

BroadcastReceiver 

自身并不实现图形用户界面,但是当它收到某个通知后, 

可以启动 

作为响应,或者通过 

NotificationMananger 

提醒用户。

2.2.4ContentProvider简介

在 

中,每个应用程序都是用自己的用户ID 

并在自己的进程中运行。

这样的好处是,可以有效地保护系统及应用程序,避免被其他不正常德应用程序所影响,每个进程都拥有独立的进程地址空间和虚拟空间。

ContentProvider 

可以将应用程序特定的数据提供给另一个应用程序使用。

其数据存储方式可以是 

文件系统、SQLite 

数据库或者其他合理的方式。

当数据需要在应用程序间共享时,我们就可以利用 

ContentProvider 

为数据定义一个 

URI 

之后,其他应用程序对数据进行查询或者修改时,只需要从当前上下文对象获得一个 

ContentResolver, 

然后传入响应的 

就可以了。

继承自基类 

,并且实现了一组标准接口。

通过这组接口,其他应用程序能对数据进行读写和存储。

然而,需要使用数据的应用程序并不是直接调用这组方法,而是通过调用 

ContentResolver 

对象的方法来完成。

对象可以与任意 

通信。

要为当前应用程序的私有数据定义 

,就需要专门定义一个继承自 

的类,然后根据不同的操作调用的方法去实现这些方法的功能。

类为应用程序提供了接入 

Content 

机制的方法。

要构造一个 

对象可以为构造方法 

ContentResolver(Contextcontext) 

传入一个 

对象,也可以直接通过 

对象调用 

getContentResolver() 

方法获得 

—— 

有了 

对象后,就可以通过调用其 

query() 

、 

insert() 

update() 

等方法来对数据进行操作了。

2.2.5Intents——连接组件的纽带

以上 

种基本组件中,除了 

是通过 

ContentResolver 

激活外,其他 

种组件 

和 

都是由 

Intent 

异步消息激活的。

在不同的组件之间传递消息,将一个组件的请求意图传给另一个组件。

因此, 

是包含具体请求信息的对象。

针对不同的组件, 

所包含的消息内容有所不同,且不同组件的激活方式也不同, 

且不同类型组件有传递 

的不同方式。

是一种运行时绑定( 

runtimebinding 

)机制,它能够在程序运行的过程中连接两个不同的组件。

通过 

,你的程序可以向 

表到某种请求或者意愿, 

会根据意愿的内容选择适当的组件来处理请求。

对于Intent更深入的介绍在后续章节中。

2.3应用程序生命周期

2.3.1应用程序的生命周期

应用程序的生命周期是在Android系统中进程从启动到终止的所有阶段,也就是Android从启动到停止的全过程。

Android应用程序的生命周期的终结这个动作并非由应用程序进程本身执行,而是取决于Android系统。

那么,系统是根据一个怎样的重要性标准来终止Android应用程序呢?

Android根据应用程序的组件以及组件当前运行状态将所有的进程按重要性程度从高到低划分为五个,如下图2-6所示:

图2-6 

Android进程的优先级

1.前台进程

前台进程是Android系统中最重要的进程,是与用户正在进行交互的进程。

有以下四种情况。

●Activity正在与用户进行交互

●进程被Activity调用,而且这个进程正在与用户进行交互

●进程服务正在执行声明中的回调函数,如OnCreate()OnStart()OnDestroy()

●进程的BroadCastReceiver在执行OnReceive()函数

Android系统在多个前台进程同时运行时,可能会出现资源不足的情况,此时会清除部分前台进程,保证主要的用户界面能够及时响应。

2.可见进程

可见进程是指部分程序界面能够被用户看见,却不在前台与用户交互,不影响界面事件的进程。

一个常见的例子是,看见进程的窗口显示在屏幕上,同时前台进程以对话框的形式悬浮在可见进程的窗口上。

如果一个进程包含服务,且这个服务正被用户可见的Activity调用,此进程同样被视为可见进程。

Android进程一般存在少量的可见进程,只有在特殊情况下,Android系统才会为保证前台进程的资源而清除可见进程。

3.服务进程

服务进程是指包含已启动Service(服务)的进程。

这些进程没有用户界面并且在后台长期运行。

Android系统除非不能保证前台进程和可见进程所必要的资源,否则不强行清除服务进程。

4.后台进程

后台进程是指不包括任何已经启动的Service(服务),而其没有任何用户可见的Activity的进程。

Android系统中一般存在数量较多的后台进程,在系统资源紧张时,系统将优先清除用户较长时间没有见到的后台进程。

5.空进程

空进程是不包含任何Activity的进程。

这种进程存在的唯一理由是提供一种缓存机制,使得缩短应用程序下次启动所需的时间。

系统会经常中止空进程,从而达到调节程序缓存和系统缓存的平衡。

空进程在系统紧张时会被首先清除。

除了以上优先级以外,以下两个方面也决定了优先级。

●进程的优先级取决于所有组件中优先级最高的部分。

●进程的优先级会根据其他进程的依赖关系而变化。

2.3.2Actvity生命周期

每个Actvity的状态由它所在Activity栈中的位置所决定,所有当前正在运行的Actvity将遵循后进先出的原则。

当一个新的Activity启动,当前的Activity将移至堆栈的顶部,如果用户使用Back按钮,或在前台Activity被关闭,下一个Activity将被激活并且移至到堆栈的顶部。

这个过程如下图2-7所示:

图2-7Activity堆栈图

随着Activity的创建和销毁,可能会经历以下四种状态:

Active(活跃)状态:

这时候Activity处于栈顶,且是可见的,有焦点的,能够接收用户输入。

Android会尽可能维持处于活跃状态的Activity,甚至中止其他Activity以确保它有它所需的资源。

当另一个Activity变成Active时,当前的将变成Paused状态。

Paused(暂停)状态:

在某些情况下,你的Activity是可见的,但没有焦点,在这时候,Actvity处于Paused状态。

例如,你的Activity处于暂停状态,有一个透明或非全屏幕上的Activity在你的Actvity上面。

当处于Paused状态时,该Activity仍被认为是Active的,但是它不接受用户输入事件。

一般情况下,Android不会结束处于暂停状态的Activity,在极端情况下,如果资源极其不足,系统将结束暂停的Activity,以进一步回收资源。

当一个Actvity完全被遮住时,它将进入Stopped状态。

Stopped(结束)状态:

当Activity是不可见的时,Activity处于Stopped状态。

Activity将继续保留在内存中保持当前的所有状态和成员信息,假设系统别的地方需要内存的话,这时它是被回收对象的主要候选。

Inactive(已被销毁或未启动)状态:

Activity彻底结束或关闭后,处于Inactive状态。

这时Activity从Activity堆栈中已被移除,需要重新启动才可以显示和使用。

Activity的生命周期是指一个Activity从创建到销毁的过程,期间可能经历多个状态的变化迁移,每次状态迁移都会触发相应的回调方法。

以下就是Activity的回调方法:

●onCreate

●onStart

●onRestart

●onResume

●onPause

●onStop

●onDestroy

我们还可以把以上7种状态归纳为三组。

●完整的生命周期

●可见的生命周期

●活跃的生命周期

表2-1给出了三种生命周期所对应的回调函数。

表2-1三种生命周期所对应的回调函数

生命周期

函数

描述

完整的生命周期

onCreate()

onDestroy()

进程的生命周期,只要进程还在,这个生命就没有死亡,进程启动时onCreate()函数被调用,onDestory()进程结束。

可见的生命周期

onStart()

onStop()

可见的生命周期,顾名思义,在用户界面上显示该activity时,onStart()被调用,该activity从用户界面消失时,onStop()被调用。

活跃的生命周期

onResume()

onPause()

活跃的生命周期,当该activit在所有activity最前面,即栈顶时,onResume()被调用,当activit被其他activity覆盖,onPause()被调用。

Activity完整的生命周期

完整的Activity生命周期之间从调用的OnCreate开始,到调用onDestro

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2