天津理工大学移动终端开发技术(安卓)期末考试复习题

发布时间:2018-07-24 11:48:14   来源:文档文库   
字号:

双向调用如何实现?

远程服务如何实现?

简答题

1、可见进程

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

2、简述R.javaAndroidManifest.xml文件的用途

R.java文件是ADT自动生成的文件,包含对drawablelayoutvalues目录内的资源的引用指针,Android程序能够直接通过R类引用目录中的资源R.java文件不能手工修改

AndroidManifest.xmlXML格式的Android程序声明文件,包含了Android系统运行Android程序前所必须掌握的重要信息,这些信息包含应用程序名称、图标、包名称、模块组成、授权和SDK最低版本等,而且每个Android程序必须在根目录下包含一个AndroidManifest.xml文件

3、简述Android系统的4种基本组件ActivityserviceContent Provider的用途

Activity(活动):应用程序表示层,应用程序中的每一个屏幕都是Activity类的扩展

Service(服务):应用程序不可见的工作者,在后台运行

ContentProvider(内容提供器):可共享的数据存储器,提供可共享的数据库功能私有数据一般不采用ContentProvider,而是使用文件,或者SQLite中的数据库

BroadcastReceiver(广播接收器):意图广播的使用者。通过创建和注册广播接收器,应用程序可以监听到那些匹配特定的过滤标准的意图广播

4、简述Activity生命周期的四种状态,以及状态之间的变换关系。

Activity表现为四种状态:

活动状态Activity在用户界面中处于最上层,完全能被用户看到,能够与用户进行交互

暂停状态Activity在界面上被部分遮挡,该Activity不再处于用户界面的最上层,且不能够与用户进行交互

停止状态Activity在界面上完全不能被用户看到,也就是说这个Activity被其他Activity全部遮挡

非活动状态:不在以上三种状态中的Activity则处于非活动状态(被用户关闭或系统终止)

转换关系:

5、简述Activity事件回调函数的作用和调用顺序。

onCreate()Activity启动后第一个被调用的函数,常用来进行Activity的初始化,例如创建View、绑定数据或恢复信息等。

onStart()Activity显示在屏幕上时,该函数被调用

onRestart()Activity从停止状态进入活动状态前,调用该函数。

onPause()Activity进入暂停状态时,该函数被调用。一般用来保存持久的数据或释放占用的资源

onStop()Activity进入停止状态时,该函数被调用。

onDestroy()Activity被终止前,即进入非活动状态前,该函数被调用。

onSaveInstanceState()Android系统因资源不足终止Activity前调用该函数,用以保存Activity的状态信息,供onRestoreInstanceState()onCreate()恢复之用。

onRestoreInstanceState()恢复onSaveInstanceState()保存的Activity状态信息,在onStart()onResume ()之间被调用

6、简述5种界面布局的特点

线性布局在线性布局中,所有的子元素都按照垂直或水平的顺序在界面上排列,如果垂直排列,则每行仅包含一个界面元素,如果水平排列,则每列仅包含一个界面元素。

框架布局最简单的界面布局,是用来存放一个元素的空白空间,且子元素的位置是不能够指定的,只能够放置在空白空间的左上角,如果有多个子元素,后放置的子元素将遮挡先放置的子元素。

网格布局将屏幕划分网格,通过指定行和列可以将界面元素添加的网格中网格的边界对用户是不可见的表格布局还支持嵌套,可以将另一个表格布局放置在前一个表格布局的网格中,也可以在表格布局中添加其他界面布局,例如线性布局、相对布局等等

相对布局相对布局(RelativeLayout)是一种非常灵活的布局方式,能够通过指定界面元素与其他元素的相对位置关系,确定界面中所有元素的布局位置,能够最大程度保证在各种屏幕类型的手机上正确显示界面布局。

绝对布局绝对布局(AbsoluteLayout)能通过指定界面元素的坐标位置,来确定用户界面的整体布局

7、简述Android系统支持三种菜单

选项菜单(Menu类),包括图标菜单、扩展菜单;子菜单(SubMenu类);快捷菜单(ContextMenu类)。

8、简述Intent的定义和用途

Intent是一种组件之间消息传递机制,是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息

Intent的用途:启动ActivityService;在Android系统上发布广播消息。

9、启动Activity方式

显式启动,程序必须在Intent中指明启动的Activity所在的类

隐式启动, Android系统根据Intent的动作和数据来决定启动哪一个Activity,也就是说在隐式启动时,Intent中只包含需要执行的动作和所包含的数据,而无需指明具体启动哪一个Activity,选择权Android系统和最终用户来决定

10、简述Intent过滤器的定义和功能

定义:Intent过滤器是一种根据Intent中的动作(Action)、类别(Categorie)和数据(Data)等内容,对适合接收该Intent的组件进行匹配和筛选的机制

功能:Intent过滤器可以匹配数据类型、路径和协议,还包括可以用来确定多个匹配项顺序的优先级(Priority);应用程序的Activity组件、Service组件和BroadcastReceiver都可以注册Intent过滤器,则这些组件在特定的数据格式上就可以产生相应的动作

11Intent解析的匹配规则

没有指定动作Intent过滤器可以匹配任何的Intent,但是没有指定类别Intent过滤器只能匹配没有类别IntentIntent“数据”Uri的每个子部与Intent过滤器的标签中的属性进行匹配,如果标签指定了协议、主机名、路径名或MIME类型,那么这些属性都要与IntentUri数据部分进行匹配,任何不匹配的Intent过滤器均被过滤掉

12、简述Service的基本原理和用途

定义:ServiceAndroid系统的后台服务组件,适用于开发无界面、长时间运行的应用功能。

用途:用于进程间通信(Inter Process CommunicationIPC),解决两个不同Android应用程序进程之间的调用和通讯问题。

特点:没有用户界面;比处于非活动状态的Activity 优先级高,不会轻易被Android系统终止。即使Service被系统终止,在系统资源恢复后Service也将自动恢复运行状态。

13、实现远程服务的步骤

接口定义:使用AIDL语言定义跨进程服务的接口

接口实现:根据AIDL语言定义的接口,在具体的Service类中实现接口中定义的方法和属性

接口使用:在需要调用跨进程服务的组件中,通过相同的AIDL接口文件,调用跨进程服务

14简述在嵌入式系统中使用SQLite数据库的优势

SQLite是一个开源的嵌入式关系数据库,在2000年由D. Richard Hipp发布,其优势(特点)有:更加适用于嵌入式系统,嵌入到使用它的应用程序中;占用资源非常少,运行高效可靠,可移植性好;提供了零配置(zero-configuration)运行模式。

15Android系统支持四种文件操作模式

MODE_PRIVATE(私有模式)缺省模式,文件仅能够被文件创建程序访问,或具有相同UID的程序访问。

MODE_APPEND,追加模式,如果文件已经存在,则在文件的结尾处添加新数据。

MODE_WORLD_READABLE全局读模式

MODE_WORLD_WRITEABLE全局写模式,允许任何程序写入私有文件。

16、简述Android NDK开发的优势和不足。

优势:解决了核心模块使用托管语言开发执行效率低下的问题;允许程序开发人员直接使用C/C++源代码,极大的提高了Android应用程序开发的灵活性

不足:增加程序的使用非托管代码复杂性,增加了程序调试的难度;CPU运算量大和内存消耗较少的部分运行效率最高, (例如信号处理或物理仿真)因此并不是所有的核心部分都适合使用C/C++语言编写。

程序填空题:

Activity

启动

Intent intent = new Intent(IntentDemo.this, ActivityToStart.class);

startActivity(intent);

隐式启动

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));

startActi vity(intent);

获取返回值

int SUBACTIVITY1 = 1;

Intent intent = new Intent(this, SubActivity1.class);

startActivityForResult(intent, SUBACTIVIT Y1);

隐式获取返回值

int SUBACTIVITY2 = 2;

Uri uri = Uri.parse("content://contacts/people");

Intent intent = new Intent(Intent.ACTION_PICK, uri);

startActivityForResult(intent, SUBACTIVITY2);

在父Activity中处理子Activity 的返回值

public void onActivityResult(int requestCode, int resultCode, Intent data){

Super.onActivityResult(requestCode, resultCode, data);

switch(requestCode){

case SUBACTIVITY1:

if (resultCode == Activity.RESULT_OK){

Uri uriData = data.getData();

}else if (resultCode == Activity.RE SULT_CANCEL){ } break;

case SUBACTIVITY2:

if (resultCode == Activity.RESULT_OK){

Uri uriData = data.getData ();

} break;} }

Broadcast Receiver 广播消息

发送消息

String UNIQUE_STRING = "edu.hrbeu.BroadcastReceiverDemo";

Intent intent = new Intent(UNI QUE_STRING);

intent.putExtra("key1", "value1");

intent.putExtra("key2", "value2");

sendBroad cast(intent);

接收消息

public void onReceive(Context context, Intent intent) {

String msg = intent.getStringExtra("mess age");

Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); }

Service

启动

Intent serviceIntent = new Intent(this, RandomService.class);

startService(serviceIntent);

隐式启动

Intent serviceIntent = new Intent();

serviceIntent.setAction("edu.hrbeu.RandomService");

停止服务

StopServic (serviceIntent )

存储 ContentProvider

首先设置存储模式(私有模式、全局读、全局写)

单个模式 public static int MODE = Context.MODE_PRIVATE; (私有)

多个模式 public static int MODE = Context.MODE_WORLD_READABLE + Context.MODE_WORLD_ WRITEABLE; (全局读和写)

定义 SharedPreferences 的名称

public static final String PREFERENCE_NAME = "SaveSetting";

获取 SharedPreferences 对象参数为名称模式

SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCE_NAME, MODE);

写数据

SharedPreferences.Editor editor = sharedPreferences.edit();

editor.putString("Name", "Tom");

edit or.putInt("Age", 20);

editor.putFloat(“ Height ” , 1.81f);

editor.commit();

读取数据

SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCE_NAME, MODE);

String name = sharedPreferences.getString("Name","Default Name");

int age = sharedPreferences. getInt("Age", 20);

float height = sharedPreferences.getFloat(“ Height ” , 1.81f);

ContentProvider 数据分享

注册 ContentProvider 使用 标签

获取 ContentResolver 对象

ContentResolver resolver = getContentResolver();

查询操作

查询 ID 2的数据

String KEY_ID = "_id";

String KEY_NAME = "name";

String KEY_AGE = "age";

String KEY_HEIGHT = "height";

Uri uri = Uri.parse(CONTENT_URI_STRING + "/" + "2";

Cursor cursor = resolver.query(uri, new String[] {KEY_ID, KEY_NAME, KEY_AGE, KEY_HEI GHT}, null, null, null);

Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder )

添加操作

添加单条数据

ContentV alues values = new ContentValues();

values.put(KEY_NAME, "Tom");

values.put(KEY_ AGE, 21);

values.put(KEY_HEIGHT, );

Uri newUri = resolver.insert(CONTENT_URI, values);

添加多条数据

ContentValues[] arrayValues = new ContentValues[10];

int count = resolver.bultInsert(CONTEN T_URI, arrayValues);

删除操作

删除 ID 2的数据

Uri uri = Uri.parse(CONTENT_URI_STRING + "/" + "2");

int result = resolver.delete(uri, null, null);

删除条件定义为 ID 大于 4的数据

String selection = KEY_ID + ">4";

int result = resolver.delete(CONTENT_URI, selection, null);

更新操作

ContentValues values = new ContentValues();

values.put(KEY_NAME, "Tom");

values.put(KEY_ AGE, 21);

values.put(KEY_HEIGHT, );

Uri uri = Uri.parse(CONTENT_URI_STRING + "/" + "7");

int result = resolver.update(uri, values , null, null);

一、 选择题

1android虚拟设备的缩写是(AVD)

2Android SDK目前支持的操作系统(Linux)

3Android开发工具插件 (ADT)没有提供的开发功能(自动更新)

4Android SDK提供一些开发工具可以把应用软件打包成 Android 格式文件(APK)

5Android当中基本的所有的 UI 都是由(view )或者其子类实现的

7下列不是Activity的生命周期方法之一的是( )

A. onCreate B. onStart C. onRestart D. onResume E. onPause F. onStop G. onDestroy

8以下可以做EditText编辑框的提示信息是(adroid:hint)

9以下不是手机操作系统的是(windows vista)

10下列哪个属性是专用于相对布局的 (android:layout_toRightOf)

A. android.orientation 线性 vertical 垂直 horizontal

B. android:stretchColumns

C. android:layout_alignParentRight

D. android:layout_toRightOf

10定义 LinearLayout 垂直方向布局时设置的属性 (android:orientation vertical)

A. android:layout_height

B. android:gravity

C. android:layout

D. android:orientation vertical 垂直

11为了使android适应不同分辨率的机型布局时字体单位应用 (sp)

A. dp B. dip 像素 C. px D. sp

二、多选题

1下面属于Android的动画分类的有 (AB)

A. Tween B. Frame C. Draw D. Animation Property Animation属性动画

2Androidservice生命周期的onCreate()onStart()说法正确的是 ( AD )

A. 当第一次启动的时候先后调用onCreate() onStart()方法

B. 当第一次启动的时候只会调用onCreate()方法

C. 如果 service 已经启动,将先后调用onCreate()onStart()方法

D. 如果 service 已经启动,只会执行 onStart()方法,不在执行 onCreate()方法

3Android中使用Menu时可能需要重写的方法有 (AC)

A. onCreateOptionsMenu() 三种菜单:选项菜单、上下文菜单、子菜单

B. onCreateMenu()

C. onOptionsItemSelected()

D. onItemSelected()

4Intent传递数据时下列的数据类型哪些可以被传递 (ABCD)

A. Serializable B. charsequence C. Parcelable D. Bundle

5java.io包中的 ( A ) ( B )类主要用于对对象Object的读写。

A. objectInputStream B. objectOutPutStream C.Reader D.writer

6继承 ContentProvider 需要实现 (ABCD)等方法。

A. insert B. delete C. update D. query

7自定义 Adapter 需要重写哪些方法? (ABCD)

A. getCount B. getItem C. getItemId D. getView

8Android中使用SQLiteOpenHelper这个辅助类时, 可以生成一个数据库, 并可以对数据库版本进行管理的方法可以是 ( AB )

A. getWriteableDatabase() B. getReadableDatabase() C. getDatabase() D. getAbleDatabase()

三、填空题

1Android平台由操作系统中间件用户界面应用软件组成。

2Android平台提供了 2D3D 的图形支持数据库支持 SQLite

3目前已知的可以用来搭建Android开发环境的系统有 windowsLinuxMac

5Android SDK主要以 java 语言为基础

6创建工程时需要填写的信息名称有工程名包的名字Activity的名字还有应用的名字

7Android.jar是一个标准的压缩包其内容包含的是编译后的 class ,包含了全部的 API

四、简答题

1. Android软件框架结构自上而下可分为哪些层?

应用程序应用程序框架各种库和Android运行环境、操作系统层

应用程序是用 Java 语言编写的运行在虚拟机上的程序, E-mail 客户端、日历、地图等;

应用程序架构是编写 Google 发布的核心应用时所使用的 API 框架,开发人员同样可以使用这些框架来开发自己的应用, 这样便简化了程序开发的架构设计, 但是必须遵守其框架的开发原则。如 Activity ManagerWindow ManagerView System等。

Android 运行环境 Core Libraries

操作系统层Android 的核心系统服务基于Linux内核如安全性、内存管理、进程管理和驱动模型等都依赖于该内核Linux内核同时也作为硬件和软件栈之间的抽象层: Display DriverKeyBoard Driver等。

2. Android应用程序的 4大组件是什么?

Activity Broadcast Intent ReceiverContent ProviderService

Activity , “活动” ,在应用程序中,一个 Activity 通常就是一个单独的屏幕。每一个活动都 被实现为一个独立的类, 并且从活动基类中继承而来, 活动类将会显示由视图控件组成的用 户接口,并对事件做出响应。

Intent , Android Intent 这个特殊类实现在 Activity Activity 之间的切换。Intent用于描述应用的功能。在 Intent 的描述结构中,有两个最重要的部分动作和动作对应的数据。

Content Provider是所有应用程序之间数据存储和检索的一个桥梁实现了一组标准的方法使得各个应用程序之间实现数据共享。

Service , “服务Server 是一个生命周期长且没有用户界面的程序。

3. Android应用工程文件结构有哪些?

源文件 (包含 Activity ) R.java 文件 Android Library assets 目录 res 目录drawble 目录layout目录values目录

AndroidManifest.xml 源文件(包含Activity)主程序继承Activity重写了onCreate(BundlesavedInstanceState)方法。

setContentView R.java 文件在建立项目时自动生成是只读模式不能修改R.java 文件是定义该项目所有资源的索引文件。

资源目录 AndroidManifest.xml资源清单文件包含了该项目中所使用的ActivityServiceReceiver

4. Android底层库包含哪些?

系统C媒体库Surface ManagerLibWebCoreSGL

系统CC语言标志库系统最底层的库C库通过Linux系统来调用。

媒体库Android系统多媒体库该库支持多种常见格式的音频、视频的回收和录制以及图片。

SGL2D 图形引擎库。

SQLite关系数据库。

WebkitWeb 浏览器引擎。

5. 请介绍下 Android 中常用的五种布局。

(1) 相对布局相对布局中可以设置某一个视图相对于其他视图的位置包括上、下、左、右。

(2) 线性布局线性布局可分为水平线性布局和垂直线性布局水平线性布局所有在这个布局中的视图都沿着水平方向线性排列垂直线性布局则沿着垂直方向线性排列。

(3) 框架布局所有添加到框架布局中的视图都是以层叠的方式显示这种显示方式类似堆栈。

(4) 表格布局表格布局可以将视图按行、按列进行排列。

(5) 绝对布局可以任意设置视图定位位置。

6. 如何将一个 Activity 设置成窗口的样式

AndroidManifest.xml中定义Activity的地方加一句话android:theme="@android:style/Theme.Dialog"

7. 请尽可能多的介绍下Android的几种数据存储方式

SharedPreferences方式文件存储方式SQLite 数据库方式网络存储方式

SharedPreferences主要用于存储配置信息类似windlws中的inf文件格式是xml的。SharedPreferences是一个轻量级的存储策略和应用程序是属于从属关系文件存储与其他平台一样

数据库使用SQLite来存放数据SQLite 数据库是移动数据库轻量级的IOSAndroid都是使用这种数据库作为存储策略虽然 SQLite是轻量级的移动数据库但是性能非常高 (远高于Oracle)SQLite和传统数据库相比最大不同点就是不存在服务器和客户端的概念Android系统自带了SQLite所以也不需要安装SQLite 数据库的操作上更类似文件操作而非传统的客户端服务器操作模式

云存储其实就是提交数据给服务器去存放

8. 简单介绍Activity的生命周期及涉及的函数

9. 简述 GLSurFaceView 的特性

(1) 管理一个surface这个surface就是一块特殊的内存能直接排版到android的视图上

(2) 管理一个EGL display它能让opengl把内容渲染到上述的surface

(3)让渲染器在独立的线程里运作UI线程分离

10. 简述 Android 应用程序结构是哪些

(1)一组 View(UI组件)这些组件包括列表(List) 、文本框(textbox) 、按钮 (button)通过这些 UI 组件可以构建应用程序的视图部分。

(2) Content Providers它提供了一种机制通过这种机制应用程序可以实现数据的互访和共享。

(3) Resource Manager它负责管理非代码的访问。即资源文件的访问管理。

(4) Notification Manager它能让程序将自己的警示信息显示在状态栏上。例如当有短信时,可以在状态栏上显示出新短信的信息。

(5) Activity Manager它管理着应用的生命周期并且提供了应用页面退出的机制。在 Android 应用中,每个应用一般由多个页面组成而每个页面的单位就是Activity通俗的说Android的应用是由多个 Activity的交互构成的

(6)各种库当使用Android应用架构时Android系统会通过一些 C/C++库来支持我们使用的各个组件使其更好地为我们服务 SGLSSLSQLiteWebkit 等。

11. 简述ActivityIntentIntentFilter的作用以及它们之间的关系

Activity作用向用户呈现操作界面与用户交互

Intent作用启动另一个Activity传递数据

IntentFilter作用可以帮助Activity跨应用调用可以对Activity进行功能分组

本文来源:https://www.2haoxitong.net/k/doc/879db260a4e9856a561252d380eb6294dd8822bb.html

《天津理工大学移动终端开发技术(安卓)期末考试复习题.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式