软考在线  |  计算机技术与软件专业技术资格(水平)考试   |   [请选择科目]
[ 成为 VIP会员 ]        登录  |  注册      我的  购物车
 
科目切换  联系我们 
    
  |   [请选择科目]

免费智能真题库 > 历年试卷 > 电子商务设计师 > 2021年上半年 电子商务设计师 上午试卷 综合知识
  第61题      
  知识点:   Android平台技术及其结构   Android   操作系统
  关键词:   操作系统   开发   开源   移动设备        章/节:   电子商务平台开发基础       

 
基于Android的移动端开发平台是一个以()为基础的开源移动设备操作系统
 
 
  A.  Windows
 
  B.  Unix
 
  C.  Linux
 
  D.  DOS
 
 
 确定 并 查看答案解析     知识点讲解  我要标记      有奖找茬      上一题        下一题 
 

 
  第56题    2020年下半年  
   28%
在Android的系统架构中,( )提供了开发Android应用程序所需的一系列类库,方便开发人员快速地构建应用整体框架。
 
   知识点讲解    
   · Android平台技术及其结构    · Android    · 操作系统
 
       Android平台技术及其结构
               Android平台简介
               Android是一个以Linux为基础的开源移动设备操作系统,主要用于智能手机和平板电脑,由Google成立的Open Handset Alliance(OHA,开放手持设备联盟)持续领导与开发中。
               Android的系统架构
               基于Linux内核操作系统,Android系统对Linux内核进行了加强。其系统架构如下图所示,采用了分层架构思想,从上到下分为4层,分别为Application(应用层)、Application Framework(应用框架层)、Libraries and Android Runtime(系统库及Android运行时,系统运行库层)和Linux Kernel(Linux内核层),各层采用Software Stack(软件栈)的方式进行构建。
               
               Android系统架构
               (1)Android应用层。Android应用层提供的服务即我们常说的应用,它是与用户直接交互的。所有的应用程序(包括原生和第三方)都在应用层上进行构建,如系统自带的日历、通话、短信、浏览器等以及在Android应用商店中下载的游戏、音乐软件等;应用层运行在Android运行时内,并且使用了应用程序框架的类和服务。
               (2)Android应用框架层。Android应用框架层提供了开发Android应用程序所需的一系列类库,通常是系统API接口,使开发人员可以方便、快速地构建应用整体框架,其具体的模块内容及功能如下:
               ①Activity Manager(活动管理器)。管理各个应用程序活动窗口并为窗口提供交互的接口。
               ②Window Manager(窗口管理器)。管理所有开启的窗口程序。
               ③Content Provider(内容提供者)。提供应用内或应用程序间数据共享功能。
               ④View System(视图)。创建应用程序基本视图组件,如ListView、TextView、WebView等控件。
               ⑤Notification Manager(通知管理器)。用户可以自定义状态栏中的提示信息。
               ⑥Package Manager(包管理器)。应用程序安装进手机后,以包名作为文件夹名进行存储,此API提供诸如应用程序的安装与卸载功能以及提示相关的权限信息。
               ⑦Resource Manager(资源管理器)。提供图片、音视频等非代码资源。
               ⑧Location Manager(位置管理器)。提供位置信息服务。
               ⑨Telephony Manager(电话管理器)。管理所有移动设备功能。
               ⑩XMPP服务。Google提供的后台推送服务。
               (3)Android系统运行库层。Android系统运行时库层包含两部分内容,一个是系统库,一个是Android运行时。
               系统库提供了系统功能通过Android应用程序框架层为开发者提供服务,其类库的主要内容包含各种C/C++核心库(如Libc和SSL)、支持音频视频的多媒体库、用于本地数据库支持的SQLite、2D/3D图形处理引擎、外观管理器、数据传输服务(WebKit、SSL)等。另外,Android NDK(Android Native Development Kit,Android原生库)也为开发者提供了直接使用Android系统资源的能力。
               Android运行时包含核心库与Dalvik虚拟机两部分:
               ①核心库提供了Java SE API的绝大多数功能,并提供Android的核心API,如android.os、android.net、android.util、android.meida等。
               ②Dalvik虚拟机是基于Apache的Java虚拟机,被改进以适应低内存、低处理速度的移动设备环境,负责运行Android应用程序,提供实现进程隔离与线程调试管理、安全和异常管理、垃圾回收等重要功能。
               (4)Android Linux内核层。Android Linux内核层作为系统架构的最底层借助Linux内核服务实现硬件设备驱动,从而为上层提供诸如进程与内存管理、网络协议栈、电源管理以及驱动程序等功能,同时Linux内核也是硬件与软件之间的抽象层(Hardware Abstract Layer,HAL),它是对硬件设备具体实现的抽象,这样程序开发人员就无须考虑系统底部的实现细节,提高了开发效率。
               Android的应用程序组件
               Android应用程序是由一些松散的组件构成,每个应用程序中都会包含一个配置文件AndroidManifest.xml,主要描述应用程序中所用到的各组件及其相互关系,还包括硬件要求、权限声明等。Android应用程序各组件之间可以调用相互独立的基本功能模块,其中根据功能的不同,可以划分为四类不同的组件,即:
               ①Activity(活动)。用于表现功能。
               ②Service(服务)。后台运行服务,不提供界面呈现。
               ③BroadcastReceiver(广播接收器)。用于接收广播。
               ④ContentProvider(内容提供者)。支持在多个应用中存储和读取数据,相当于数据库。
               各组件之间是通过Intent来实现消息传递,Intent可以理解为不同组件通信的媒介或者信使。Intent可以启动或停止一个Activity或Service,还可以发起一个广播Broadcast,Android系统中大量使用了Intent,在实际的应用程序开发中也会频繁使用Intent传递信息。
               (1)Activity(活动)。是Android应用程序核心组件中最基本的一种,也是最常见的组件,是用户和应用程序交互的窗口。通常一个Android应用程序由一个或多个Activity组成,多个Activity之间可以进行相互跳转,例如按下一个Button按钮后,可能会跳转到其他的Activity。与Web网页跳转不同的是,Activity之间的跳转可以有返回值,例如从Activity A跳转到Activity B,那么当Activity B运行结束的时候,有可能会给Activity A一个返回值,这样做在很多时候是非常方便。虽然Android应用程序有多个Activity组成,但是其中却只有一个主Activity。
               (2)Service(服务)。是一种类似Activity但没有用户界面的组件,运行在后台,相当于操作系统中的一个服务,并且可以和其他组件进行交互。Service也是一种程序,是没有界面的长生命周期的代码,它可以运行很长时间,例如打开一个音乐播放器的程序,这个时候若想上网,再打开一个Android浏览器,歌曲播放并没有停止,而是在后台继续播放,就是由播放音乐的Service进行控制。
               (3)BroadcastReceiver(广播接收器)。是一种全局监听器,用来接收来自系统或其他应用程序的广播。并作出回应,在Android系统中,当有特定的事件发生时就会产生相应的广播,并通过NotificationManager来通知用户有事件发生。
               (4)ContentProvider(内容提供者)。主要是实现在不同应用程序之间数据的共享与交换,使得其他应用可以对自身的数据进行增、删、改、查操作(通常结合SQLite使用)。由于Android中的文件、数据库在系统内都是私有的,仅允许被特定的应用程序直接使用,所以ContentProvider类实现了一组标准方法的接口,从而能让其他的应用程序读取或保存ContentProvider提供的各类数据。Android系统使用了许多ContentProvider,例如:联系人资料、通话记录、短信、相册等,一般这些数据都存放于不同的数据库中。
               Android开发框架
               Android开发的常用框架分别为MVC(Model-View-Controller)框架、MVP(Model-View-Presenter)框架和MVVM(Model-View-ViewModel)框架,目前Google主推MVVM开发框架模式。MVC前文已有介绍,在此主要介绍MVP和MVVM框架。
               (1)MVP(Model-View-Presenter)。MVP模式是目前Android系统非常流行的框架,是从MVC模式演变过来的,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。但是MVP与MVC有着一个重大的区别,如下图所示:在MVP中View并不直接使用Model,二者完全分离以减少耦合,它们之间的通信是通过Presenter(MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过Controller。MVP大大降低了耦合度(Activity不再进行复杂的操作),层级更明显,相对MVC来说MVP更加适用于Android应用的开发。
               
               MVC和MVP框架
               .Model(模型):依然是实体模型(作用与MVC相同)。
               .View(视图):在对应的Activity和XML文件中,负责View的绘制以及与用户的交互。
               .Presenter(交互器/表示器):负责完成View与Model间的交互和业务逻辑。
               MVP核心是过一个抽象的View接口(IView)将Presenter与View层进行解耦。Persenter持有该View接口,对该接口进行操作,而不是直接操作View层。这样就可以把视图操作和业务逻辑解耦,从而使得Activity成为真正的View层。
               虽然MVP使得Android开发变得更简单,但是也存在以下弊端:
               ①Presenter层与View层是通过接口进行交互的,接口粒度不好控制。粒度太小,就会存在大量接口的情况,使代码太过碎版化;粒度太大,解耦效果不好。同时对于界面UI的输入和数据的变化,需要手动调用View层或Presenter层相关的接口,相对来说缺乏自动性、监听性。
               ②MVP是以界面UI和事件为驱动的传统模型,更新UI都需要保证能获取到控件的引用,同时更新UI的时候还要考虑当前是否是UI线程,也要考虑Activity的生命周期。而且数据都是被动地通过UI控件做展示,但是由于数据的时变性,因此更希望数据能转被动为主动,数据能更有活性,由数据来驱动UI。
               ③View层与Presenter层还是有一定的耦合度。一旦View层某个UI元素更改,那么对应的接口就必须得改,数据如何映射到UI上、事件监听接口这些都需要转变。同时,复杂的逻辑业务处理也可能会导致Presenter层代码变得异常臃肿。
               (2)MVVM(Model-View-ViewModel)。为了解决MPV框架结构的弊端,MVVM框架利用数据绑定(Data Binding)、依赖属性(Dependency Property)、命令(Command)、路由事件(Routed Event)等新特性打造了一个更加灵活高效的架构。Google于2016年正式推出MVVM正式库,目前的Android Studio能够很好的支持在MVVM框架下开发应用程序。
               作为MVP的升级版,MVVM将Presenter改名为ViewModel(视图模型)。如下图所示,MVVM的核心思想是实现View和Model的双向绑定,当View有用户输入后,ViewModel通知Model更新数据,同理Model数据更新后,ViewModel通知View更新。
               
               MVVM框架
               .Model(模型):和MVP相同,基本就是实体模型(Bean),包括Retrofit的Service。ViewModel可以根据Model获取一个Bean的Observable(RxJava),然后做一些数据转换操作和映射到ViewModel中的一些字段,最后把这些字段绑定到View层上。
               .View(视图):View层实现和界面UI相关的工作,开发人员只在XML和Activity或Fragment写View层的代码。View层不做和业务相关的事,Activity不写和业务逻辑相关代码,也不需要根据业务逻辑来更新UI的代码,而更新界面UI通过Binding实现,在ViewModel里面更新绑定的数据源即可,Activity要做的事就是初始化一些控件。Activity可以更新UI,但是更新的UI必须和业务逻辑和数据是没有关系的,只是单纯的根据点击或者滑动等事件更新UI(如根据滑动颜色渐变、根据点击隐藏等单纯UI逻辑),Activity(View层)只是处理UI本身的事件,简单地说:View层不做任何业务逻辑、不涉及操作数据、不处理数据、UI和数据严格分开。
               .ViewModel(视图模型):ViewModel层做的事情刚好和View层相反,它只做和业务逻辑和业务数据相关的事,不做任何和界面UI、控件相关的事,ViewModel层不会持有任何控件的引用,不会在ViewModel中通过UI控件的引用去更新UI。ViewModel专注于业务的逻辑处理,操作也都是对数据进行操作,数据源绑定在相应的控件上会自动去更改UI,开发者不需要关心更新UI。
               MVVM的主要优点包括:
               ①数据驱动。在常规的开发模式中,数据变化需要更新界面UI的时候,需要先获取UI控件的引用,然后再更新UI。在MVVM中,这些都是通过数据驱动来自动完成,数据变化后会自动更新UI,UI的改变也能自动反馈到数据层,数据成为主导因素。这样MVVM在业务逻辑处理中只要关心数据。对于版本迭代中频繁的UI改动,更新或新增一套View即可。
               ②低耦合度。MVVM框架的分工是非常明确,数据是独立于UI。数据和业务逻辑处于一个独立的ViewModel中,ViewModel只需要关注数据和业务逻辑,不需要和UI或者控件打交道,即便是控件改变了(例如:TextView换成EditText),ViewModel也几乎不需要更改的。
               ③可复用性。一个ViewModel可以复用到多个View中。对于版本迭代中频繁的UI改动,更新或新增一套View即可。
               MVVM的优点还体现在团队协作、单元测试等方面。总之,Google推进的MVVM开发框架优势非常明显,是今后Android开发框架的主要发展趋势。
 
       Android
        Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日发布的手机操作系统。Android早期由原名为Android的公司开发,Google公司在2005年收购Android公司后,继续对Android系统进行开发和运营。
               Android系统的优势
               Android系统目前的市场占有率仍在急剧提高,这主要得益于其以下优势。
               . 平台的开放性允许任何厂商加入,使其拥有了更多的开发者,新的应用和创意可以不断地出现。
               . 摆脱了运营商的束缚,让手机更加贴近互联网。
               . 应用程序都是基于Java开发的,Java具有一次编写、四处运行的跨平台性,实现了在所有的Android设备中运行,真正做到了硬件无关性,降低了开发者的负担。
               . 提供了标准的API和SDK开发包,手机厂商可以根据需要自行开发或者使用已有的程序,从而打造出富有特色的Android平台。
               Android的体系架构
               Android采用了软件堆层的架构,一共分为四层,自下向上分别是Linux内核层、系统运行库层、应用框架层和应用层,如下图所示。
               
               Android体系结构
               ①Linux内核层。
               Android基于Linux 2.6内核提供系统的核心服务,如安全性、内存管理、进程管理、网络协议栈和驱动模型。内核层的驱动包括显示驱动、键盘驱动、Flash内存驱动、照相机驱动、音频驱动、蓝牙驱动、Wi-Fi驱动、Binder IPC驱动、Power Manager驱动。其中,Binder IPC驱动用来提供进程之间通信的功能。
               系统运行库层主要包括两个部分,一是程序库(Libraries),二是Android运行库(RunTime)。程序库通过Android应用程序框架为开发者提供服务,主要包括以下几种。
               . 系统C库。从BSD继承而来的标准C系统函数库,是专门为基于嵌入式的Linux设备制定的。
               . 媒体库。该库支持多种常用的音频、视频格式的回放和录制,同时支持静态图像文件。编码格式包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG。
               . Surface Manager。用于管理、显示子系统,并为多个应用程序提供2D和3D图形层的无缝融合。
               . LibWebCore。Web浏览器引擎,支持Android浏览器和可嵌入的Web视图。
               . SGL。底层的2D图形引擎。
               . 3D libraries。基于OpenGL ES 1.0 APIs实现,该库可以使用硬件3D加速或者高度优化的3D软加速。
               . FreeType。位图和矢量字体显示。
               . SQLite。轻量级的关系型数据库。
               所有Android应用程序都运行在它自己的进程中,该进程是一个Dalvik虚拟机的实例。Dalvik虚拟机是由Google公司自主研发的,它被设计成一个设备,可以同时高效地运行多个虚拟系统。Dalvik在保证API兼容的同时,针对移动手机进行了优化,以占用更小的资源,提高了运行效率。Dalvik虚拟机依赖于底层Linux内核提供的功能,如线程机制和内存管理机制。
               Android应用程序的开发基于应用程序框架(Application Framework)和组件,开发人员拥有同核心应用程序一样的APIs访问权限。应用程序后面是一系列的服务和系统,其中包括以下几种。
               . 视图(Views)。构造应用程序的视图部分,包括列表(Lists)、文本框(Textboxes)、按钮(Buttons)等。
               . 内容提供器(Content Providers)。提供一种实现数据互访和共享的机制。
               . 资源管理器(Resources Marager)。负责管理非代码的访问,如本地字符串、图片资源及涉及布局的XML文件。
               . 通知管理器(Notification Manager)。用于将提示信息显示在状态栏上。例如,当收到短信的时候在状态栏上显示新信息。
               . 活动管理器(Activity Manager)。用于管理应用程序的生命周期,并提供应用页面的退出机制。
               ②应用程序(Application)。
               Android的应用程序通常涉及用户界面和用户交互。Android本身提供了桌面(Home)、联系人(Contact)、电话(Phone)和浏览器(Browsers)等众多的核心应用。所有核心应用都使用Java编写,开发者可以使用应用程序框架层的API实现自己的程序,这也是Android开源优势的体现。
               从总体架构上看,Android平台显示出了自身的特点,如集成了WebKit浏览器、Dalvik虚拟机等模块。这些模块的应用也成为Android开发的焦点,开发者可以利用Android提供的模块接口开发出具有特色的应用程序。
 
       操作系统
        编写嵌入式软件有两种选择:一是自己编写内核;二是使用现成的操作系统。如果嵌入式软件只需要完成一项非常小的工作,例如在电动玩具、空调中,就不需要一个功能完整的操作系统。但如果系统的规模较大、功能较复杂,那么最好还是使用一个现成的操作系统。可用于嵌入式系统软件开发的操作系统有很多,但关键是如何选择一个适合开发项目的操作系统,可以从以下几点进行考虑:
        (1)操作系统提供的开发工具。有些实时操作系统只支持该系统供应商的开发工具,因此,还必须从操作系统供应商处获得编译器、调试器等;而有的操作系统应用广泛,且有第三方工具可用,因此选择的余地比较大。
        (2)操作系统向硬件接口移植的难度。操作系统到硬件的移植是一个重要的问题,是关系到整个系统能否按期完工的一个关键因素。因此,要选择那些可移植性程度高的操作系统,以避免因移植带来的种种困难。
        (3)操作系统的内存要求,有些操作系统对内存有较大要求。
        (4)操作系统的可剪裁性、实时性能等。
   题号导航      2021年上半年 电子商务设计师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第61题    在手机中做本题