基于Android平台轨迹追踪的应用设计与实现 毕设论文 - 图文(3)

2018-12-27 20:22

湖南大学毕业设计(论文) 第 7 页

2.3 Android平台体系架构

Android平台采用了分层的架构,从架构图看分为四层,从上层到下层分别是应用程序层、应用程序框架层、系统运行库层以及Linux内核层,架构图如图2.1所示。

图2.1 Android平台架构

1.应用程序层

Android应用层由运行在Android设备上的所有应用共同构成,它不仅包括随Android系统一起预装在移动设备上的通话、短信、联系人等系统应用,还包括其他后续安装到设备中的第三方应用。

Android的应用都是基于Java语言开发的,但在部分应用中需要使用开源C/C++类库,或者进行图形处理和运算。通过Java来实现会存在执行效率低和移植成本高等问题。因此,在Android开发中可使用C/C++来实现底层模块,并添加相应接口与上层Java交互,最后利用Android提供的交叉编译工具生成类库并添加到应用中[3]。

2.应用程序框架层

湖南大学毕业设计(论文) 第 8 页

框架层是由多个系统服务共同组成的,包括窗口管理服务、组件管理服务、电源管理服务、地理信息服务、通话管理服务等[8]。所有服务都寄宿在系统的核心进程中,运行时每个服务占据独立的线程,彼此通过进程间的通信机制发送消息和传输数据[8]。

从系统设计的角度来看,框架层是Android系统中最核心的部分,它进行着全局统筹,参与到应用层的每一次操作中。每一次构造窗口、处理用户交互事件、绘制界面、获得当前地理信息、了解设备信息等操作,都是在各个系统服务的支持下实现的。而对于开发者而言,框架层最直观的体现就是SDK,它通过一系列的Java功能模块,来实现应用所需的功能。SDK的设计决定了上层应用的开发模式、开发效率及能够实现的功能范畴。

3.系统运行库层

系统运行库包括核心类库和Android运行库。

核心类库由一系列的二进制动态库共同构成,通常使用C/C++进行开发,核心类库不能够独立运行于线程中,需要系统服务加载其到进程空间,再通过类库提供的JNI接口进行调用[3]。核心类库的来源主要有两种,一种是系统原生类库,以便Android使用C/C++来实现一些性能关键模块来提高框架层的执行效率,如:资源文件管理模块、基础算法库等[4]。而另一种则是第三方类库,大部分是移植优秀开源项目,它们保障了Android能够提供丰富功能,如:Android 的多媒体处理,依赖于开源项目OpenCORE的支持;浏览器控件的核心实现,是从Webkit移植而来;而数据库功能,则是得益于SQLite[4]。

Android运行库由Java核心类库和Java虚拟机Dalvik共同构成,来实现Java程序在运行阶段的二次编译。Java核心类库涵盖了Android框架层和应用层所要用到的基础Java库,包括Java对象库、文件管理库、网络通信库等。Dalvik 是为Android量身打造的Java虚拟机,采取了基于寄存器的虚拟机架构设计,负责动态解析执行应用、分配空间、管理对象生命周期等工作,Dalvik 执行效率很高,更能够发挥高端硬件的能力。

4.Linux内核层

Linux内核的优势在于进程管理、大内存管理、共享库支持、基于权限的安

湖南大学毕业设计(论文) 第 9 页

全模型、代码开源、统一的驱动模型等。Linux具有强大的可移植性,Linux可以运行在各式各样的芯片架构和硬件环境下,而依托于它的Android系统,也便有了强大的可移植性。同时,Linux 内核也作为硬件和软件栈之间的抽象层,像一座桥梁将Android的上层实现与底层硬件连接起来,使它们可以不必直接耦合,因此降低了移植的难度。 2.4 Android应用程序组成

Android应用程序一般主要由以下四个部分组成:Activity、Broadcast Receiver、Service和Content Provider[4]。

每个android应用程序都包含一个必不可少的文件AndroidManifest.xml,每个Activity、service、Content Provider都需要在AndroidManifest文件中进行配置,而Broadcast Receive的注册分静态注册(在AndroidManifest文件中进行配置)和通过代码动态创建方式注册至系统。这四大组件之间的关系如图2.2所示。

图2.2 Android组件关系

下面对每个组件作简要介绍: 1.Activity组件

Activity是Android应用程序最基础的组件,它代表手机屏幕的一屏,是用户与应用程序的交互接口。Activity相当于一个UI容器,开发者可以在Activity中添加一些View,并对这些View做一些事件处理,比如通过对某些控件如

湖南大学毕业设计(论文) 第 10 页

TextView,Button的操作,实现Activity之间的跳转。

一个应用程序中的多个Activity是通过栈来管理的,多个 Activity遵循着后进先出的原则通过压栈和弹栈来实现界面的跳转,栈顶的activity是当前屏幕显示的、集中处理用户动作的Activity。当一个新的activity启动时,这个新的activity将压入栈中,成为正在运行中的 activity,前一个activity保留在栈中;当用户使用后退按钮时,当前的activity将从栈中弹出,而前面的那个activity恢复成运行中状态。

在栈管理中,Activity有四种状态,这四种状态共同构成了Activity的生命周期,如图2.3所示。

图2.3 Activity生命周期

在Activity的整个生命周期中,当一个Activity被启动时,首先是调用onCreate()方法设置初始化界面全部信息,如界面的views、buttons和分配的引用变量等;初始化完成后会调用onStart()方法,此时用户可看到界面;当用户与界面进行交互时就会调用onResume()方法;而调用onPause()方法时,此Activity

湖南大学毕业设计(论文) 第 11 页

是可见但不可交互的,即这个Activity依然保持着所有的连接状态,但系统会停止部分消耗CPU的事情。当被其他Activity覆盖时调用onStop()方法,该Activity不可见。在后面的这两种情况下都会调用onSaveInstanceState()方法来暂时保存被覆盖的Activity的状态,在这些被覆盖的Activity重新回到界面上的时候会恢复这些状态;调用onDestroy()方法后所有资源释放,Activity从栈中移除。

2.Broadcast Receiver组件

应用程序可以使用Broadcast Receiver对外部事件进行过滤,只对感兴趣的外部事件进行接收并做出响应。Broadcast Receiver没有用户界面,它是通过启动activity、使用NotificationManager或者在状态栏显示一个图标来通知用户某些事情的发生,比如用闪动背灯和震动等方式通知用户电池电量低、电话呼入、数据网络可用等。

所有Broadcast Receiver均继承自BroadcastReceiver基类,一个应用程序可以拥有任意数量的广播接收器。注册广播事件有两种方式:一种是在AndroidManifest.xml文件中定义,称为静态注册;另一种是在程序中使用Context.registerReceiver注册,称为动态注册。广播事件的发送是通过Context.sendBroadcast来完成的,当发送的广播被接收器监听到后,会调用它的onReceive()方法,并将包含消息的Intent对象传给它。

3.Service组件

Service是在后台运行不与用户交互的,一般处理比较耗时以及长时间运行的操作,如下载、网络获取和播放音乐等。Service不是一个独立的进程,它与应用程序运行在同一个进程当中。要使用Service,首先要在AndroidManifast.xml配置清单文件中节点里对服务进行配置,再通过传递一个Intent对象至Context.startService()或Context.bindService()启动服务。

4.Content Provider组件

ContentProvider提供了一种通用的接口机制,实现了不同存储方式和类型的数据共享。当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据。ContentProvider是基于权限控制的,为了便于管理和访问,每个ContentProvider都拥有一个公共的Uri代表着要操作


基于Android平台轨迹追踪的应用设计与实现 毕设论文 - 图文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《投资学》试题AB卷 答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: