基于Android平台的即时通讯系统的研究与设计毕业设计.doc

上传人:文库蛋蛋多 文档编号:2393851 上传时间:2023-02-17 格式:DOC 页数:57 大小:1.99MB
返回 下载 相关 举报
基于Android平台的即时通讯系统的研究与设计毕业设计.doc_第1页
第1页 / 共57页
基于Android平台的即时通讯系统的研究与设计毕业设计.doc_第2页
第2页 / 共57页
基于Android平台的即时通讯系统的研究与设计毕业设计.doc_第3页
第3页 / 共57页
基于Android平台的即时通讯系统的研究与设计毕业设计.doc_第4页
第4页 / 共57页
基于Android平台的即时通讯系统的研究与设计毕业设计.doc_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《基于Android平台的即时通讯系统的研究与设计毕业设计.doc》由会员分享,可在线阅读,更多相关《基于Android平台的即时通讯系统的研究与设计毕业设计.doc(57页珍藏版)》请在三一办公上搜索。

1、本科毕业设计(论文)基于Android平台的即时通讯系统的研究与设计 学 院 自动化学院 专 业 网络工程 (网络与信息化方向) 年级班别 2009级(2)班 学 号 3109001332 学生姓名 张京 指导教师 郑日荣 2013 年 5 月 基于A n d r o I d平台的即时通讯系统的研究与设计张京自动化学院摘 要随着Android系统的发展,越来越多的移动设备开始使用Android作为操作系统。Android系统内核基于Linux而来,应用层则使用基于Java代码的Dalvik虚拟机,因此Android代码的主要编程语言是Java。即时通讯(Instant Messenger,简称

2、IM),指基于互联网的即时交流信息的业务。即时通讯是当今互联网用户主要通讯方式之一,能够为互联网用户带来直观、便捷的信息交换服务。蓝牙,一种支持设备短距离通信的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。本文主要对Android系统、蓝牙协议进行研究,通过分析Android的一个蓝牙即时通讯实例,达到基于Android即时通讯系统的研究目的。在这些研究的基础上,设计出能够实现Android系统上基于蓝牙、能够进行文件发送的即时通讯软件。首先,本文分析Android系统的框架以及功能特征,讲述了Android系统的基本运作方式。其次,讲述了

3、在Android系统上如何使用蓝牙协议,研究了Android系统上的蓝牙工作方式以及关键代码。最后,分析蓝牙的工作实例,在此基础上在Eclipse开发出能够实现即时通讯的Android实例,并且能够传送文件。关键词:即时通讯; 蓝牙; AndroidAbstractWith the development of the Android system, more and more mobile devices start using Android as the operating system. Android system is based on the Linux kernel and t

4、he application layer is using Java-based code Dalvik virtual machine, therefore, the major programming language of Android system is Java.Instant Messenger (Abbreviated IM), refers to Internet-based real-time information exchange service. IM is the main way to communicate of Internet users; one can

5、provide Internet users with an intuitive and convenient information exchange service. Bluetooth, one that supports short-range communication device radio technology, can include mobile phone, PDA, wireless headsets, laptop computers, related peripherals and other wireless information exchange betwee

6、n devices.This paper mainly research on the Android system and the Bluetooth protocol, by analyzing of a Bluetooth Android IM instance, to achieve the purpose of researching Android-based instant messaging system. Design an Android system based on Bluetooth, with the capable of instant messaging and

7、 file sending.Firstly, this paper analyzes framework and functional characteristics of Android system, and tells the basic operation of Android system. Secondly, Using Bluetooth protocol on the Android system and tells some key-codes. Finally, design an IM program through Eclipse based on the analys

8、is of Bluetooth working examples which have the ability to transfer files.Keywords: Instant Messaging; Bluetooth; Android目 录摘 要IABSTRACTII1 绪论11.1 关于ANDROID系统的背景以及研究目的11.2 国内外研究状况11.3 通过GOOGLE Android SDK以及ECLIPSE进行开发21.4 本论文研究的目的及意义31.5 本论文主要结构32 Android系统的研究与设计52.1 Android系统的功能特征52.2 Android系统的编程环

9、境的搭建62.3 Android系统的架构72.3.1 Android操作系统72.3.2 Android应用程序92.4 Android程序开发102.4.1 Android用户界面(UI)102.4.2 Android 控制层开发112.4.3 Android任务和进程/线程模型132.4.4 Android 持久层开发142.5 Bluetooth142.5.1 Bluetooth 简介142.5.2 Bluetooth有关基本概念162.5.3如何在Android系统中操作Bluetooth223程序主要架构与模块263.1 需求分析263.1.1引言263.1.2系统功能263.1.

10、3设计分析273.1.4运行环境说明283.2程序主要架构以及流程293.2.1 BluetoothChat 例程分析293.2.2 Bluetooth模块313.2.3 文件读取以及存储模块384程序的调试与结果414.1虚拟机的搭建以及使用414.2 ADB调试444.3 DEBUG调试454.4 运行结果46总 结49参考文献51致 谢521 绪论1.1 关于Android系统的背景以及研究目的Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。Android一

11、词最早出现于法国作家利尔亚当(Auguste Villiers de lIsle-Adam)在1886年发表的科幻小说未来夏娃(Lve future)中。他将外表像人的机器起名为Android2。蓝牙协议Bluetooth。蓝牙是一种短距离的无线通信技术,它最初提出的是用来取代电缆连线,也可以用于各种移动设备的互联,组建个人无线局域网4,蓝牙无线通信技术的主要特点5有:低成本、低功率;短标称的蓝牙无线通信距离,以节省电池能量;永外加的功率放大器扩展的无线通信距离;在全球可用并且无限制的2.4GHZ ISM(工业、科学、医疗)频段内。随着,人们对于即时通讯的需求越来越多样化,产生了各种各样不同用

12、途的协议。即时通讯(Instant Messenger,简称IM),是指能够即时发送和接收互联网消息等的业务。自1998年面世以来,特别是近几年的迅速发展,即时通讯的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。即时通讯不再是一个单纯的聊天工具,它已经发展成集交流、资讯、娱乐、搜索、电子商务、办公协作和企业客户服务等为一体的综合化信息平台。是一种终端连往即时通讯网络的服务。即时通讯不同于e-mail在于它的交谈是即时的。大部分的即时通讯服务提供了状态信息的特性显示联络人名单,联络人是否在在线与能否与联络人交谈3。在这样的背景之下,发展Android系统上的即时通讯软

13、件已经成为一个非常主流性的问题,如何实现,以及如何提供更加优质的服务将会是Android开发的一个非常重要的问题。1.2 国内外研究状况目前Android最新的版本是4.2 JellyBean, 中文名是“果冻豆”,该系统是Android 4.0.x Ice Cream Sandwich (冰激凌三明治) 的升级版, Android 5.0的代号将是Key Lime Pie(酸橙派)。在今年的2013 Google I/O 大会上,从Google Play到Map、Game API,再到Android Studio开发工具,Android在移动端的全面系统升级,这也让Android之前和iOS

14、相对较弱的部分全面追上。Android发行的版本:Android在正式发行之前,最开始拥有两个内部测试版本,并且以著名的机器人名称来对其进行命名,它们分别是:阿童木(AndroidBeta),发条机器人(Android 1.0)。后来由于涉及到版权问题,谷歌将其命名规则变更为用甜点作为它们系统版本的代号的命名方法。甜点命名法开始于Android 1.5发布的时候。作为每个版本代表的甜点的尺寸越变越大,然后按照26个字母数序:阿童木(AndroidBeta)发条机器人(Android 1.0),2008年9月发布。纸杯蛋糕(Android 1.5)Cupcake,2009年4月30日发布。甜甜圈

15、(Android 1.6)Donut,2009年9月15日发布。松饼(Android 2.0/2.1)clair,2009年10月26日发布。冻酸奶(Android 2.2)Froyo,2010年5月20日发布。姜饼(Android 2.3)Gingerbread,2010年12月7日发布。蜂巢(Android 3.0)Honeycomb,2011年2月2日发布。冰激凌三明治(Android 4.0)Ice Cream Sandwich,2011年10月19日在香港发布。果冻豆(Jelly Bean,Android4.1和Android 4.2)Jelly Bean,2012年6月28日发布,

16、Android 4.2 Jelly Bean:2012年10月30日发布。对于基于Android系统的即时通讯软件,国内比较著名的软件有QQ(Android版)、微信。国外比较著名的有MSN、LINE ME等等。1.3 通过GOOGLE Android SDK以及ECLIPSE进行开发早期的Android应用程序开发中,通常通过在Android SDK(Android软件开发包)中使用Java作为编程语言来开发应用程序。开发者亦可以通过在Android NDK(Android Native开发包)中使用C语言或者C+语言来作为编程语言开发应用程序。同时Google还推出了适合初学者编程使用的S

17、imple语言,该语言类似微软公司的Visual Basic语言。此外,Google还推出了Google App Inventor开发工具,该开发工具可以快速地构建应用程序,方便新手开发者。 Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。Eclipse的插件机制是轻型软件组件化架构。在客户机平台上,Eclipse使用插件来提供所有的附加功能,例如支持Java以外的其他语 言。 已有的

18、分离的插件已经能够支持C/C+(CDT)、Perl、Ruby,Python、telnet和数据库开发。插件架构能够支持将任意的扩展加入到 现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言6。1.4 本论文研究的目的及意义早期的即时通讯是属于Unix用户的专利,随着个人电脑与互联网的普及,即时通讯成为人与人沟通的另一条管道。即时通讯在2003年后与万维网、电子邮件共同成为互联网使用的主流。2007年之后,由于智能手机普遍流行起来。传统上电信运营商所建构SMS、MMS信息服务系统,逐渐被以网络架构的第三方服务商所瓜分移动设备的加值营收。而对于Android系统,这方面的发展有5年,相比起其

19、他平台的发展已经短了很多,而对于这种新兴的移动设备系统,有更加多的信息可以利用,例如GPS信息、照片信息,手机联系人信息等等。这些开发能够使移动设备之间的通讯更加人性化、更加便利,有利于提高通讯效率。即时通讯除了能加强网络之间的信息沟通外,最主要的是可以将网站信息与聊天用户直接联紧在一起。通过网站信息向聊天用户群及时群发送,可以迅速吸引聊天用户群对网站的关注,从而加强网站的访问率与回头率;即时通信利用的是互联网线路,通过文字、语音、视频、文件的信息交流与互动,有效节省了沟通双方的时间与经济成本;即时通信系统不但成为人们的沟通工具,还成为了人们利用其进行电子商务、工作、学习等交流的平台。1.5

20、本论文主要结构本文章主要分为5个部分:绪论、Android系统的研究与设计、程序主要架构与模块、程序的调试、程序运行结果。1、绪论本章主要介绍Android系统、Bluetooth的背景以及开发现状,以及本系统的设计意义。2、Android系统的研究与设计本章主要介绍Android系统的框架与特征,介绍Android系统的运作方式与特征函数,以及蓝牙的术语定义以及Android中如何运用蓝牙。3、程序主要架构与模块本章主要介绍程序的需求分析,介绍系统的逻辑运行流程,介绍实例关键代码。4、程序的调试以及运行结果本章主要介绍Eclipse中如何调试及其过程,以及程序的运行结果。2 Android系

21、统的研究与设计2.1 Android系统的功能特征1、应用程序架构:在应用程序架构内已经具备多种不同的基础组件,在开发应用程序时,就可以直接调用这些组件来使用,可以节省开发应用程序的心力及时间。2、Dalvik虚拟机器:在Android平台上所使用Java虚拟机,不是Sim公司的标准Java虚拟机,而是使用Google自主开发的代号为Dalvik的虚拟机,它在保证API方面的兼容的同时,针对移动手机进行了大幅优化,占用资源更小,运行效率更高。3、集成的浏览器:集成的浏览器是Android内建的浏览器,是以WebKit的浏览引擎为基础所开发成的。WedKit是一个开源浏览器网页排版引擎,目前使用

22、WebKit引擎的浏览器主要有:Safari,Midori,Epiphany等。配合Android手机的功能,可以在浏览网页时,达到更好的效果,例如:局部性的缩放网页上的资讯、触控式的操作等效果。4、优化的绘图能力:在程序里可以用到的绘图功能分为2D与3D两个方面。在2D方面,Android提供了一套特有的类库,而在3D方面则是使用OpenGL ES1.0(openGLforEmbeddedsystems)规范的类库。它们是一种非常快的图形引擎,并且支持硬件加速。5、SQLite数据库:SQLite提供结构化的数据存取。SQLite是一款轻型的数据库,它的设计目标是嵌入式的,目前已经在很多嵌入

23、式产品中使用了它,它占用的资源非常低。它能够支持Windows/Linux/Unix等主流的操作系统,同时能够跟很多程序语言相结合,比如PHP,Java等,还有ODBC接口,同样比起Mysql,PostgreSQL来讲,它的处理速度比它们都快。它无需安装和管理配置,它是一个储存在单一磁盘文件中的完整数据库,体积小只有250KB但支持数据库大小至2TB。它虽然很小巧,但是支持的SQL语句毫不逊色于其它开源数据库。同时它还支持事务功能和并发处理等等。SQLite也是一套开放性的关联式资料库,其特点在于轻量性方面的设计结构,更适合在手机上使用。6、多媒体的支持能力:主要用于播放媒体文件。这同时包括对

24、音频(如播放MP3或其他音乐文件等)和视频(如播放从网上下载的视频)的支持,并支持“播放URI地址”(Note:URI即是统一资源识别地址)模式在网络上直接播放的流媒体。另外支持各种通用的静态图像格式,如JPG、PNG、GIF等格式。7、GSM技术:GlobalSystemforMobileCommunications,即全球移动通讯系统,俗称“全球通”,是一种起源于欧洲的移动通信技术标准,是第二代移动通信技术,其开发目的是让全球各地可以共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。GSM技术是属于手机硬件方面的展现,也是在开发Android应用程序时可以突出的特点之一。8、蓝

25、牙:蓝牙是一种新型、开放、低成本、短距离的无线连接技术,可取代短距离的电缆,实现话音和数据的无线传输。EDGE(EnhancedDataRateforGSM Evolution),即增强型数据速率GSM演进技术。EDGE是一种从GSM到3G的过渡技术,它主要是在GSM系统中采用了一种新的调制方法,即最先进的多时隙操作和SPSK调制技术。由于8PSK可将现有GSM网络采用的GMSK调制技术的信号空间从2扩展到8,从而使每个符号所包含的信息是原来的4倍。Wi-Fi(Wireless Fidelity),即无线保真技术,与蓝牙技术一样,同属于在办公室和家庭中使用的短距离无线技术。该技术使用的是2.4

26、GHz附近的频段,该频段目前尚属没用许可的无线频段。其目前可使用的标准有两个,分别是IEEE802.lla和IEEE802.11b。这些通讯能力也是属于手机硬件方面的展现,也是在开发Android应用程序时可以突出的特点之一。9、GPS:GlobalPositioningSystem,即全球定位系统,它是一个由覆盖全球的24颗卫星组成的卫星系统。这个系统可以保证在任意时刻和任何地点都可以同时观测到4颗卫星,以保证卫星可以采集到该观测点的经纬度和高度,以便实现导航、定位、授时等功能。这项技术可以用来引导飞机、船舶、车辆以及个人。同样也是属于手机硬体方面的体现,也是在开发Android应用程序是可

27、以突出的特点之一。2.2 Android系统的编程环境的搭建所需开发环境:JDK 5或者JDK 6 (仅有JRE不够) 、Eclipse 3.5 (galileo)。下载用于在Eclipse 开发android应用的ADT 插件,在企业开发中,很多程序员使用Eclipse IDE作为应用的开发环境。为了使得Android应用的创建,运行和调试更加方便快捷。Android的开发团队专门针对Eclipse IDE定制了一个插件:Android Development Tools(ADT)安装 Eclipse 插件 (ADT),启动 Eclipse,选择 Help Install New Softw

28、are,在出现的对话框里,点击Add按钮,在对话框的name一栏输入“ADT”, 然后点击Archive.,浏览和选择已经下载的ADT插件压缩文件。点击 OK.。返回可用软件的视图,会看到这个插件,然后选择Developer Tools (会选中下面的“Android Developer Tools”和 “Android Editors”),点击 Next,最后重启 Eclipse。 下载安装Android SDK:Android SDK包含了开发Android应用所依赖的jar文件、运行环境及相关工具。下载完SDK后,把.zip文件解压到电脑上合适位置。启动 Eclipse,选择window

29、-preferences,在打开的视图左边点击android,在右边的SDK Location中选择Android SDK所在位置。 在用户变量中新建PATH值为:Android SDK中的tools绝对路径(本机为D:AndroidDevelopandroid-sdk-windows ools)。 新建一个新的项目7:通过File-New-Project菜单,建立新项目AndroidProject然后填写必要的参数, (注意这里我勾选的是GoogleAPIs,可以选喜欢的,但要创建相应的AVD),相关参数的说明:ProjectName:包含这个项目的文件夹的名称。PackageName:包名

30、,遵循JAVA规范,用包名来区分不同的类是很重要的,我用的是helloworld.test。ActivityName:这是项目的主类名,这个类将会是Android的Activity类的子类。一个Activity类是一个简单的启动程序和控制程序的类。它可以根据需要创建界面,但不是必须的。ApplicationName:一个易读的标题在的应用程序上。 在选择栏的Usedefaultlocation选项,允许选择一个已存在的项目。点击Finish后,点击Eclipse的Run菜单选择RunConfigurations选择“AndroidApplication”,点击在左上角(按钮像一张纸上有个“+”

31、号)或者双击“AndroidApplication”,有个新的选项“New_configuration”(可以改为我们喜欢的名字)。在右侧Android面板中点击Browse,选择HelloWorld2.3 Android系统的架构2.3.1 Android操作系统第一层:Linux操作系统和驱动(Linux kernel):由C语言实现。Android核心系统服务依赖于Linux2.6内核,包括:安全性、内存管理、进程管理、网络协议、驱动模型。Linux内核也作为硬件和软件栈之间的抽象层。除了标准的Linux内核外,Android还增加了内核的驱动程序:Binder(IPC)驱动、显示驱动、

32、输入设备驱动、音频系统驱动、摄像头驱动、WiFi驱动、蓝牙驱动、电源管理。第二层:本地框架和Java运行环境(LIBRARIES 和 ANDROID RUNTIME)本地框架是有C/C+实现。包含C/C+库,被Android系统中不同组件使用,它们通过Android应用程序框架为开发者进行服务。系统C库:(libc)从BSD继承过来的标准的C系统函数库,专门是为基于嵌入式Linux的设备定制的库。多媒体库:基于PackerVideo的OpenCore;该库支持多种常用的音频、视频格式回放和录制,支持多种媒体格式的编和解码格式。Suface Manager:显示子系统管理器,并且为多个应用程序提

33、供2D和3D图层的无缝融合。LibWebCore:一个最新的Web浏览器引擎,支持Android浏览器,以及一个可嵌入式的Web视图。SGL:Skia图形库,底层的2D图形引擎。3D libraries:基于OpenGL ES1.0 API的实现;该库可以使用硬件3D加速(如果可用),或者使用高度优化的3D软加速。FreeType:位图(bitmap)和矢量(vector)字体显示。Android运行环境(ANDROID RUNTIME):提供了Java编程语言核心库的大多数功能,由Dalvik Java虚拟机和基础的Java类库组成。Dalvik是Android中使用的Java虚拟机,每个A

34、ndroid应用程序都在自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个可以同时高效运行多个虚拟机实例的虚拟系统。执行后缀名为.dex的Dalvik可执行文件,该格式的文件针对小内存使用做出了优化。同时虚拟机是基于寄存器的,所有的类都是有Java编译器编译,然后通过SDK中的“dx”工具转化为.dex格式由虚拟机执行。Dalvik虚拟机依赖于Linux内核的一些功能,比如线程机制和底层内存管理机制。第三层:Android应用框架(ANDROID FRAMEWORK): 在Android系统中,开发人员也可以完全访问核心应用程序所使用的API框架。包含的框架入上

35、图(不在陈述)第四层:Android应用程序(APPLICATIONS) Android应用程序都是有Java语言编写的。用户开发的Android应用程序和Android的核心应用程序是同一层次的,它们都是基于Android的系统API构建的。图2.1 Android系统架构图2.3.2 Android应用程序src/ java原代码存放目录gen/ 自动生成目录gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。 这个文件由Android开发工具自动产生的。Android开发工具会自动根据res目录的xml界面文件、图标与常量,同步更新修改R.j

36、ava文件。因为R.java文件是由开发工具自动生成的,应避免手工修改R.java。R.java在应用中起到了字典的作用,它包含了界面、图标、常量等各种资源的id,通过R.java,应用可以很方便地找到对应资源。另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。8res/ 资源(Resource)目录:在这个目录中可以存放应用使用到的各种资源,如xml界面文件,图片或数据。具体请看ppt下方备注栏。assets资源目录:Android除了提供/res目录存放资源文件外,在/assets目录也可以存放资源文件,而且/as

37、sets目录下的资源文件不会在R.java自动生成ID,所以读取/assets目录下的文件必须指定文件的路径,如:file:/android_asset/xxx.3gpAndroidManifest.xml 项目清单文件: 这个文件列出了应用程序所提供的功能,以后开发好的各种组件需要在该文件中进行配置,如果应用使用到了系统内置的应用(如电话服务、互联网服务、短信服务、GPS服务等等),还需在该文件中声明使用权限。default.properties 项目环境信息,一般是不需要修改此文件。2.4 Android程序开发2.4.1 Android用户界面(UI)对于一个Android手机应用来说,

38、一个好看有简介的界面,是相当重要的。技能提高使用者的体验,又能保证应用的搞笑执行。Android SDK已经为用户提供了一套完善的界面设计功能,有丰富的组件供我们使用,如果还不能满足我们的界面需求,还可以对它们进行扩展。为了达到这样的目标,就要对Android SDK中提供的界面生成技术进行全面深入的学习,做到应用自如。Android实现用户界面的基本知识,包括构建屏幕的基本组件,怎样使用XML定义屏幕并把它加载到代码中、以及需要为用户界面处理的各种任务。9我们写任何一段程序,都是需要有UI的,因为程序最终是给用户去用的,即使写了一个工具,没有任何显示输入、输出,也还是需要暴露不要的方法来提供

39、别人使用,在此情景下,这些方法似乎也可以看作是UI。对于Android开发来说,用户界面的视线是比较重要的和复杂的一环,如果有HTML设计经验,或者说有Swing、Flash等图形设计经验,那么理解Android的UI设计会容易得多,甚至会有似曾相识的感觉。图2.2 用户界面的树形结构 对于一个Android应用来说,android.app.Activity类实例是一个最基本的功能单元。一个Activity实例可以做很多事情,但它本身无法显示在屏幕上,而是借助于视图组(ViewGroup)和视图(View),这两个才是Android平台上最基本的用户界面表达单元。2.4.2 Android 控

40、制层开发Android控制层包括:Activity、Intent & Intent Filter、Broadcast Receiver、Service、NotificationManager、AlarmManager。Activity是Android最基本的应用程序组件。在应用程序中,一个Activity通常就是一个单独的屏幕,用于呈现数据和与用户进行交互,每个屏幕可以有1个或者多个组件布局。几乎所有的Activity都要和用户打交道,所以Activity类创建了一个窗口,开发人员可以通过setContentView(View)方法吧UI防盗Activity创建的窗口中。尽管Activity经

41、常被用来当作全屏窗口使用,但也可以通过其他方式来使用,比如作为浮动窗口(通过设置代windowsFloating标签的主体),或者嵌入到其他的Activity(通过ActivityGroup)中。Activity类是Android应用生命周期的重要部分,而且,Activity的启动方式及Activity间的调度关系是Android平台应用模型的一个重要组成部分。在Android系统中,Activity被一个Activity栈所管理,当一个新的Activity启动时,其被放置到栈顶,成为运行中的Activity,前一个Activity则被保存在栈中,不再放到前台,知道新的Activity退出为止

42、。我们可以通过回退操作回到以前打开过的Activity,也可以选择性地移除一些没有必要保留在Activity栈中的Activity。Broadcast Receiver是一个专门用来接收广播通知消息,并做出相应处理的组件。很多广播是源自于系统本身的比如,通知时区改变、电池电量低、拍摄照片、来电、发短信或者用户改变了语言环境等。应用程序也可以进行广播比如说,通知其他应用程序下载完成并处于可用状态。Service:服务没有可视化的用户界面,而是一段时间内在后台运行。比如,一个服务可以在用户做其他事情的时候在后台播放背景音乐,从网络上获取或者计算一些数据提供给需要这个运算结果的Activity使用。

43、每个服务都继承自Service基类。媒体播放器播放列表中的曲目是一个经典例子。播放器应用程序可能有1个或多个Activity来给用户选择歌曲并进行播放。然而,音乐播放这个任务本身不应该为任何Activity所处理,因为用户期望在做别的事情时,音乐仍在继续播放。为打到这个目的,媒体播放器Activity应该启用一个运行于后台的服务,系统在这个Activity不再可见时,仍维持音乐播放服务运行。用户可以连接(或者叫绑定)一个正在运行的服务(如果服务没有运行,则启动之)。连接之后,可以通过服务器提供的借口与服务器进行通讯。对于音乐服务来说,这个借口可以允许用户暂停、回退、停止、以及重新开始播放等。如

44、同Activity和其他组件一样,服务运行于应用程序进程的主线程内,所以不会对其他组件或用户界面有任何干扰。服务一般会派生一个新的线程来进行一些耗时的任务(比如音乐回放)。Android系统使用类NotificationManager来通知用户后台所发生的事情。实例必须使用方法Context.getSystemService(NOTIFIVCATION_SERVICE)来获得,而不能直接对NotificationManager进行实例化。AlarmManager经常结合Service来使用,用来显示后台Service的运行状态等。一个Android应用主要由4中组件组成:Activity、Se

45、rvice、BroadcastReceiver以及ContentProvider,这四种组件是独立的,他们之间可以互相调用、协调工作,最终组成一个完整的Android应用。其中,Activity、Service、BroadcastReceiver组件之间的通信,主要是由Intent来协助完成的。Intent负责对应用中操作的动作、动作涉及数据及附加数据进行描述,Android则根据此Intent的描述,找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。Intent也可以通过广播的形式,来描述并广播某些已经发生的时间。因此,Intent在这里起到一个媒体中介的作用,专门提供组件互

46、相调用的相关信息,实现调用者与被调用者之间的解耦。 Android控制层最重要的机制是Intent。围绕着Intent,可以协调Activity、Service、BroadcastReceiver之间的通信,并可以使用NotificationManager和AlermManger通知UI和用户底层时间的发生。所有的组件在manifest文件中配置,通过代码为组件添加逻辑处理,降低了组件和逻辑处理之间的耦合性,体现了翻转控制的优势(IoC)。2.4.3 Android任务和进程/线程模型一个Activity可以启动另外一个Activity,甚至可以启动与他不处于同一应用程序的Activity。举

47、个例子来说,假设想让用户看到某个地方的接到地图,并且已经存在了一个具有此功能的Activity,那么Activity所需要做的工作就是把请求信息放到一个Intent对象里,并把它传递给startActivity()。于是,地图浏览器就会显示那个地图,而且用户按下BACK键的时候,Activity又会再一次显示在屏幕上。对于用户来说,这看起来就像是地图浏览器,是的Activity所在的应用程序的一个组成部分,其实它是在另外一个应用程序中定义的,并运行在那个应用程序的进程中。Android是将这两个Activity放在同一个任务重来维持一个完整的用户体验的。简单地说,“任务”就是用户所一眼道的“应用程序”。一个Task通常会涵盖多个Activity,而这些Activity可能分别属于不同的Application,因此,属于同一个Task的Activity通常会在不同的进程里(可能会并行)执行。例如,提个Application会去启动手机里的浏览器去网络上下载歌曲,这个Task就会涵盖apk里

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号