1、 Android移动应用开发习题答案 单元 1 Android开发环境搭建与模拟器创建 1填空题 ( 1) 2008 ( 2) Linux、操作系统 ( 3) 应用程序层、应用程序框架层、核心类库、 Linux 内核 ( 4) Java C+/C ( 5) 应用框架 ( 6) 应用程序 ( 7) 模拟器、 Android 模拟器 ( 8) IntelliJ IDEA Android 2选择题 ( 1)创建程序的过程中,填写 Application Name 表示( )。 正确答案: A ( 2) Android 操作系统的手机可以有以下几个方法进行软件安装( ) 。( 多选题 ) ABCD (
2、 3) Android 操作系统主要的特点是:( ) 。( 多选题 ) 正确答案: ABC ( 4) 以下对 Android 操作系统描述正确的是:( ) 。( 多选题 ) 正确答案: ABCD ( 5) 以下哪些是 Android Stuido 的优势( ) 。( 多选题 ) 正确答案: ABCD ( 6) 以下哪些是 Genymotion 模拟器 的优势( ) 。( 多选题 ) 正确答案: ABCD 3简答题 ( 1) Android 的四层架构分别包括哪几层?分别起到什么作用? 参考 答 案 : Linux 内核层( Linux Kernel):基于 Linux 内核,内核为上层系统提供
3、了系统服务。 核心类库 层( Libraries):系统库基于 C/C+语言实现,通过接口向应用程序框架层提基于 Android Studio 的 移动应用开发任务驱动教程 2 供编程接口。 应用框架层( Application Framework):为开发者提供了一系列的 Java API,包括图形用户界面组件 View、 SQLite 数据库相关的 API、 Service 组件等。 应用程序层( Applications):包含了 Android 平台中各式各样的应用程序。 ( 2) 简述 Android 开发环境安装的步骤。 参考 答 案 : 下载并安装 JDK,配置 JDK 的环境变
4、量; 从 Anroid 官网上下载 Android 开发组件(包含 Eclipse 和 Android SDK、 ADT); 安装 Android 开发环境(包括配置 Android SDK 的环境变量、打开 Eclipse 通过菜单设定 Android SDK 路径)。 ( 3)简述 Android Studio 的优势。 参考 答 案 : 略。 ( 4)简述 Genymotion 模拟器 的优势。 参考 答 案 : 略。 ( 5) 简述 Android 应用程序创建和运行的步骤。 参考 答 案 : 通过菜单创建 Android 应用程序,设置应用程序名、 Android 版本等基本信息。
5、单击 菜单中的运行按钮可以直接运行 Android 项目(也可以通过菜单配置运行参数,指定运行的模拟器)。 单元 2 Android Studio的组成结构与基本操作 1填空题 ( 1) res/layout ( 2) Activity、 Bundle ( 3) XML ( 4) java 代码文件 ( 5) AndroidManifest.xml ( 6) 打包成 .apk 文件 2选择题 ( 1)如果需要创建一个字符串资源,需要将字符串放在 resvalues 的哪个文件中?( ) B ( 2)新建的 Android 程序默认的布局方式是相对布局( RelativeLayout),该布局中
6、包含一个( )控件。 B ( 3)要让布局文件或者控件能够显示在界面上,必须要设置 RelativeLayout 和控件的单元 3 ( )。 C ( 4) AndroidManifest.xml 配置文件中, activity和 application 里都可以设置 android:label标签, activity 的优先级 ( ) application。 C ( 5) Android项目启动时最先加载的是 AndroidManifest.xml文件,如果有多个 Activity,以下哪个属性决定了该 Activity 最先被加载?( ) A ( 6) Android 安装软件后缀是( )
7、 。 C 3简答题 ( 1) 如何区分 Android Studio 中的 Project 和 Module? 参考 答 案 : 略。 ( 2) 如何在 Android Studio 开发环境中 打开 Android 项目文件 所在的 目录 ? 参考 答 案 : 略。 ( 3) 在 Android 的布局文件 activity_main.xml 中“ +id/username”与 “id/username“两者有何区别? 参考 答 案 : 略。 ( 4) Android 程序如何 获取界面上的 控件并在窗口中显示? 参考 答 案 : 略。 ( 5) 如何将一个 Activity 设置成窗口的样
8、式。 参考 答 案 : 在 AndroidManifest.xml 中定义 Activity 的地方一句话android:theme=“android:style/Theme.Dialog“或android:theme=“android:style/Theme.Translucent“就变成半透明的 。 ( 6)简述 Android 项目 中重要的 文件夹 和文件, 它 们的作用是什么? 参考 答 案 : src 目录:该目录中存放的是我们需要编辑的 Java 源代码; gen 目录:目录中存放所有由 Android 开发工具自动生成的文件,它包含了界面、图标、常量等各种资源的 id; bin
9、 目录:目录中的内容是程序运行后自动生成的,不需要我们编辑,里面包含自动生成的可执行文件(如 HelloAndroid.apk); res 目录:该目录中放置程序的重要资源,包括图片、布局、字符串等资源; AndroidManifest.xml 文件:该文件非常重要,列出了应用程序许多基本信息(如版本、应用程序名称、启动图标等),其中还包括了程序使用到的各种服务(如电话服务、互联网服务、短信服务、 GPS 服务等),该文件甚至包括 了程序中所使用到的各个 Activity 信息。 03单元 3 Android的界面设计与资源应用程序设计 1填空题 ( 1) RelativeLayout、 Li
10、nearLayout、 TableLayout、 GirdLayout 基于 Android Studio 的 移动应用开发任务驱动教程 4 ( 2) android:layout_alignParentLeft ( 3) 水平、竖直 ( 4) RelativeLayout ( 5) android:layout_alignRight ( 6) 左上角 ( 7) findViewById ( 8) XML ( 9) TableRow ( 10) R.id.btnLogin 2选择题 ( 1) Android 中有许多控件,这些控件无一例外的都继承自( )类。 D ( 2) Android 中有
11、许多布局,它们均是用来容纳子控件和子布局的,这些布局均继承自( )。 B ( 3) 下列属性中,( )属性可以“在指定控件左边”。 D ( 4)相对布局中,“是否跟父布局底部对齐”是属性( )。 C ( 5) 从下哪一个控件是用来显示图片?( ) A ( 6) 如果要实现用户单击后触发一定的处理,以 下哪一个控件最合适?( ) D ( 7) 以下哪个控件可以用来显示进度 ?( ) B ( 8) 以下哪个 方法 可以用来获得进度条的当前进度值 ?( ) A ( 9) ListView 是常用的( )类型控件。 C ( 10) 以下哪个属性用来表示引用图片的资源 id( )。 D ( 11) 相对
12、布局中,如果指定一个控件位于引用控件的左侧,应该使用( )属性。 D ( 12) 表格布局中 android:layout_column 属性的作用是指定( )。 D 单元 5 3简答题 ( 1) 简述五种布局的特点和运用场合。 参考 答 案 : 线性布局:控件可以按照水平或者垂直方向进行排列,控件排列方式简单 。 相对布局: 控件 相对于其他控件或者容器决定控件的位置 , 能够设定控件之间的相对关系、控件与父容器的相对关系,控件排列方式比较灵活,是常用的布局之一 。 表格布局:通过配合使用 TableRow 可以将控件以表格形式排列。 框架布局: 控件按照创建顺序 在屏幕的左上角重叠 显示
13、,用于制作特别的控件 。 绝对布局: 通过绝对的坐标控制控件摆放的位置。 虽然摆放控件很 容易,但是不适合多种分辨率和尺寸的屏幕,需要慎用 。 ( 2) 简述本 单元 所 介绍 控件的特点和作用。 参考 答 案 : TextView:最基础的控件,用做显示文本信息; Button 控件:通过监听器单击事件,可以实现用户 单击 按钮后触发相应动作; ImageView 控件:用于显示图片的控件,可以通过 src 属性指定显示的图片,可以通过调用方法来动态设定图片; EditText 控件:输入文本控件,主要用于让用户输入信息, inputtype 属性可以指定输入文本时的键盘特征; DatePi
14、cker 控件和 TimePicker 控件: 日期和时间控件,可以显示日期和时间,也可以让用户进行日期和时间的选择。 ( 3) Android 的属性、方法如何使用, 它 们分别起了什么作用? 参考 答 案 : Android 控件的属性,可以通过 xml 文件设定,通过设定控件的属性能够静态的改变控件的样式和一些特性; 控件的方法,可以通过编写代码动态调用方法,在程序中调用方法可以动态的修改控件的样式、也可以获得控件的相关信息; 单元 4 Android的事件处理与交互实现程序设计 1填空题 ( 1) activiey, service, broadcast 和 contentprovid
15、e ( 2) 运行状态、暂停状态、停止状态 ( 3) standarD singleTop、 singleTask ( 4) 隐式 Intent、显示 Intent ( 5) onRestart() ( 6) 基于 Android Studio 的 移动应用开发任务驱动教程 6 startActivityForResult() onActivityResult() ( 7) Activity ( 8) 对象 ( 9) 显示一些提示信息 ( 10) 显示全部信息、显示调试信息、显示一般信息、显示警告信息、显示错误信息 2选择题 ( 1) 如果需要捕捉某个控件的事件,需要为该控件创建( )。 C
16、( 2) 一个 Android 应用程序默认会包含( )个 Activity。 A ( 3) 下列方法中, Activity 从启动到关闭不会执行是( )。 D ( 4) 下列控件中,不能使用 Intent 启动的是( )。 D ( 5) startActivityForResult 方法接收两个参数,第 1 个是 Intent,第 2 个是( )。 C ( 6) 下列判刑 Activity 的描述中,错误的是( )。 C ( 7) Android 中下列属于 Intent 的作用的是 ( )。 C ( 8) 在 Activity 的生命周期中,当 Activity 处于栈顶时,此时处于哪种状
17、态 ?( ) A ( 9) 在 Activity 的生命周期中,当 Activity 被某个 AlertDialog 覆盖掉一部分之后,会处于哪种状态 ?( ) A ( 10) Action 属性 ACTION_DIAL 代表( )标准动作。 A ( 11) 如果需要显示 id 为 1 的联系人信息, Intent 中 的 Action 属性与 Data 属性 应该设定为什么? ( )。 A ( 12) Toast 创建完毕后,需要显示出来此时需要调用以下哪个方法 ?( ) B ( 13) 以下哪个类对应 Android 中的提示对话框 ?( ) A ( 14) Android 中有一个服务用
18、来管理通知,它是 ( ) 。 B 3简答题 ( 1) 简要说明 Activity 的 4 种启动模式的区别。 参考 答 案 : 四种启动模式分别是: 单元 7 Standard:每当启动一个新的 Activity,它就会进入任务栈,并处于栈顶的位置,对于使用 standard 模式的 Activity,系统不会判断该 Activity 在栈中是否存在,每次启动都会创建一个新的实例。 SingleTop:与 standard 类似,不同的是,当启动的 Activity 已经位于栈顶时,则直接使用它不创建新的实例。如果启动的 Activity 没有位于栈顶时,则创建一个新的实例位于栈顶。 Sing
19、leTask:创建的 Activity 只存在一个实例。已经存在则直接使用该实例,并将当前Activity 之上的所有 Activity 出栈,如果没有发现则创建一个新的实例。 singleInstance:启动一个新的任务栈管理 Activity ( 2) 简要说明 Activity 的 3 种状态以及不同状态使用的方法。 参考 答 案 : Activity 三种状态分别是: 运行状态:该状态下可以对界面进行操作 暂停状态:界面可见但不具有焦点无法 单击 停止状态:界面不可见,一般在停止状态时保存数据以防止程序被系统强制杀死。 ( 3) Android 提供了多种提示方式, 简述 它们 各自
20、的优缺点? 参考 答 案 : Android 提供的常见的提示信息的方式有 Toast、 Dialog 以及 Notification。它们各 自的特点如下: Toast 只能给用户提示信息,过一定时间后信息自动消失,用户只能阅读提示的信息,不能做出交互性动作,也不能修改 Toast 的界面。 Dialog 不仅能给用户提示信息,还可以让用户选择对提示信息的响应方式,更复杂的,用户可以定制 Dialog 的界面。 Notification 提供了更高级的提示信息的方式,手机界面上有专门用于显示 Notification的区域。用户可以向下滑动拉开通知栏,查看通知的内容,还可以进一步打开相关的
21、Activity来对通知信息做进一步的处理。 ( 4) Intent 有哪些重要属性, Activity 之间是如何进行信息的传递的? 参考 答 案 : 属性: Component(组件)、 Action(动作)、 Data(数据)、 Category(分类)、 Type(类型)、 Extra(扩展信息)。 在 Android 中是通过 intent 中的属性进行信息的传递的。 ( 5) Android 的监听器如何使用 ,有 什么作用? 参考 答 案 : 控件的监听器,可以通过编码为控件创建、设定监听器,监听器可以监听控件发生的事件,一旦发生某个监听的事件可以触发相应的处理代码。 ( 6)
22、简述如何在 Android 程序使用 Toast? 参考 答 案 : 使用 Toast 可以直接调用 Tosast 的静态方法: Toast.makeText(this, text, duration).show(); 也可以创建出 Toast 对象,如: Toast toast = new Toast(this); toast.setText(“提示信息 “); toast.show(); 基于 Android Studio 的 移动应用开发任务驱动教程 8 单元 5 Android的数据存储与数据共享程序设计 1填空题 ( 1) 文件、 Sharedpreferences、 SQLite、
23、 ContentProvider ( 2) 内存、 SD 卡 ( 3) 配置参数 ( 4) openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory)、SQLiteOpenHelper ( 5) Cursor、 close ( 6) insert、 delete、 update、 query ( 7) 保存、检索 ( 8) ContentResolver ( 9) “键 -值” ( 10) “ android.permission:WRIT_EXTERNAL_STORAGE” ( 11) Uri ( 12) o
24、nCreate() 2选择题 ( 1) 下列文件操作权限中,指定文件内容可以追加的是( )。 C ( 2) 下例代码中,用于获取 SD 卡路径的是( )。 D ( 3) 下列选项中,关于文件存储数据的说法错误的是( )。 D ( 4) 如果要将程序中的私有数据分享给其他应用程序,可以使用的是( )。 C ( 5) 下列命令中,属于 SQLite 下的命令是( )。 C ( 6) 以下哪个方法能够实现数据库的数据插入?( ) C ( 7) 以下哪种数据库操作不能使用 execSQL 方法执行?( ) C 单元 9 ( 8)使用 SQLite 数据库进行查询操作后,必须要做的操作是( )。( 多选
25、题 ) AC 3简答题 ( 1) 简述几种 Android 数据存储的方法和特点。 参考 答 案 : 文件存储:操作文件的方法与 Java 完全一致,可以将信息存储到应用程序的默认目录、指定目录、 SD 卡目录中去, 可以存储较大文件,以 IO 流形式传输数据。 但对于结构化数据的解析比较麻烦。 SharedPreferences:轻量级的数据存储方式,通过该类可以方便的实现数据的存入和读取,主要用于参数的存储 ,以键值对的形式存于内存中 。 SQLite 数据库:支持 SQL 语句,通过配合使用 SQLiteOpenHelper、 SQLiteDatabase、Cursor 这几个类,能够轻
26、松的实现结构化数据的存储和读取。 占用内存小,所有文件都存放在单一文件中。 ContentProvider:提供自身暴露 的数据给第三方应用使用,统一了数据访问格式,以数据库形式保存数据。 ( 2)简要说明 SQLite 数据库创建的过程。 参考 答 案 : 首先创建一个类继 承 SQLiteOpenHelper,重写 onCreate()方法并在该方法中创建表,使用创建出的 SQLiteOpenHelper 的子类对象的 getWritableDatabase()方法获得一个可读写的数据库对象。 ( 3) 简述 使用 Sharedpreference 如何存储数据。 参考 答 案 : 使用
27、Sharedpreference 储存数据时因为它本身没有写文件的功能,因此需要使用 Editor对象将数据存入内存,比如: SharedPreferences sp = getSharedPreferences(“config“, 0); Editor editor = sp.edit(); editor.putString(“a“, “a“); mit(); ( 4) 简要说明 ContentProvider 对外共享数据的好处。 参考 答 案 : 通过 ContentProvider 共享数据统一了数据访问方式,使用起来更规范,通过数据库存储并指定了 URI,只有通过特定 URI 才能访
28、问数据,使数据更安全。 ( 5) 简要说明 ContentProvider、 ContenResolver 和 ContentObserver 之间的联系。 参考 答 案 : ContentProvider 可以共享自己的数据给外部应用访问,要访问 ContentProvider 暴漏的数据就要用到 ContentResolver。而 ContentObserver 就相当于中间人的角色,它可以事实监听 ContentProvider 的数据是否发生变化,如果发生变化就会触发 onChange()方法,Contentresolver 可以在 onChange()方法中查询的哪些数据发生了变化再
29、对数据进行操作。 单元 6 Android的服务( Service)与广播应用程序设计 基于 Android Studio 的 移动应用开发任务驱动教程 10 1填空题 ( 1) Service、 onBind() ( 2) startService()、 bindService() ( 3) ( 4) receiver abortBroadcast() ( 5) 有序广播、无序广播 ( 6) registerReceiver、 unregisterReceiver 2选择题 ( 1)每一次启动服务都会调用( )方法。 D ( 2)下列方法中,不属于 Service 生命周期是( )。 A (
30、 3) 继承 BroadcastReceiver 会重写( )方法。 A ( 4) 关于广播的作用,说法正确的是( )。 A ( 5) 下列方法中,用于发送一条有序广播的方法是( )。 B ( 6) 在清单文件中,注册广播时使用的结点是( )。 C ( 7) BroadcastReceiver 说明错误的是( )。 B ( 8)下列选项中,属于绑定服务特点的是( )。( 多选题 ) ABC ( 9) Service 与 Activity 的共同点是( )。( 多选题 ) AC ( 10)关于 Service 生命周期的 onCreate()和 onStart()方法,正确的是( )。( 多选题
31、 ) BD 3简答题 ( 1) 简要说明 Service 的几种启动方式及其特点。 参考 答 案 : 服务两种启动方式,分别是: Start 方式启动:服务与调用者没有绝对关联,当调用者关闭后服务还会一直在后台运行。 Bind 方式启动:服务与调用者的生命周期所关联,当调用者关闭时,服务也会关闭。 ( 2) 简要说明 Service 常用的生命周期回调方法 。 单元 11 参考 答 案 : onCreate()该方法在服务被创建时调用,该方法只会被调用一次,无论调用多少次startService()或 bindService()方法,服务也只被创建一次。 onDestroy()该方法在服务被终
32、止时调用。 Context.startService()启动 Service 有关的生命周期方法 onStart() 只有采用 Context.startService()方法启动服务时才会回调该方法。该方法在服务开始运行时被调用。多次调用 startService()方法尽管不会多次创建服务,但 onStart()方法会被多次调用。 Context.bindService()启动 Service 有关的生命周期方法 onBind()只有采用 Context.bindService()方法启动服务时才会回调该方法。该方法在调用者与服务绑定时被调用,当调用者与服务已经绑定,多次调用 Contex
33、t.bindService()方法并不会导致该方法被多次调用。 onUnbind()只有采用 Context.bindService()方法启动服务时才会回调该方法。该方法在调用者与服务解 除绑定时被调用。 ( 3)简要 说明注册广播有几种方式,这些方式各有何优缺点。 参考 答 案 : 注册广播有两种方式。 非常驻型广播:这种广播依赖于注册广播的 控件 的生命周期,例如,在 Activity 中注册广播接收者,当 Activity 销毁后广播也随之被移除。 常驻型广播 :当应用程序关闭后,如果接收到其他应用程序发出的广播,那么该程序会自动重新启动。但是 4.0 以上的系统中如果安装了应用但是没
34、有打开过,当有广播发出时应用也接收不到广播信息。 ( 4) 简要说明接收系统广播时哪些功能需要使用权限。 参考 答 案 : 拨打电话: 发送短信: 设备开机: 电池电量低: 单元 7 Android的网络与通信应用程序设计 1填空题 ( 1) Socket 通信、 HTTP 通信、 URL 通信、 WebView。 ( 2) HTTP 请求 ( 3) HttpURLConnection、 HttpClient ( 4) GET、 POST ( 5) 基于 Android Studio 的 移动应用开发任务驱动教程 12 线程间通信 ( 6) Java 2选择题 ( 1) 下列通信方式中,不是
35、Android 系统提供的是( )。 D ( 2) 关于 HttpURLConnection 访问网络的基本用法,描述错误的是( )。 C ( 3) 下列选项中,不属于 AsyncHttpClient 特点的是( )。 D ( 4) 下列选项中,关于 GET 和 POST 请求方式,描述错误的是( )。 B ( 5) Hanlder 是线程与 Activity 通信的桥梁 , 如果线程处理不当,机器就会变得越慢,线程销毁的方法是 ( ) 。 A ( 6)下列选项中,不属于 Handler 机制中的关键对象是( )。 A 3简答题 ( 1)简述使用 HttpURLConnection 访问网络的
36、 基本 步骤。 参考 答 案 : 略。 ( 2) 简述使用 HttpClient 访问网络的 基本 步骤。 参考 答 案 : 使用 HttpClient 访问网络的步骤如下: 创建 HttpClient 对象; 指定访问网络的方式,创建一个 HttpPost 对象或者 HttpGet 对象; 如果需要发送请求参数,可调用 HttpGet、 HttpPost 都具有的 setParams()方法。对于HttpPost 对象而言,也可调用 setEntity()方法来设置请求参数; 调用 HttpClient 对象的 execute()方法访问网络,并获取 HttpResponse 对象; 调用
37、HttpResponse.getEntity()方法获取 HttpEntity 对象,该对象包装了服务器的响应内容。也就是我们所请求的数据。 ( 3) 简述 Handler 机制四个关键对象的作用 。 参考 答 案 : Handler 机制四个关键对象的作用如下: Message Message 是在线程之间传递的消息,它可以在内部携带少量的信息,用于在不同线程之间交换数据。 Message 的 what 字段可以用来携带一些整型数据, obj 字段可以用来携带一个 Object 对象。 Handler Handler 顾名思义就是处理者的意思,它主要用于发送消息和处理消息。一般使用Hande
38、lr 对象的 sendMessage()方法发送消息,发出的消息经过一系列的辗转处理后,最终会传递到 Handler 对象的 handlerMessage()方法中。 MessageQueue MessageQueue 是消息队列的意思,它主要用来存放通过 Handler 发送的消息。通过Handler 发送的消息会存在 MessageQueue 中等待处理。每个线程中只会有一个单元 13 MessageQueue 对象 。 Looper Looper 是每个线程中的 MessageQueue 的管家。调用 Looper 的 loop()方法后,就会进入到一个无线循环中。然后每等发现 Mess
39、ageQueue 中存在一条消息,就会将它取出,并传递到 Handler 的 HandlerMessage()方法中。此外每个线程也只会有一个 Looper 对象。在主线程中创建 Handler 对象时,系统已经为我们创建了 Looper 对象,所以不用手动创建Looper 对象,而在子线程中 Handler 对象,我们需要调用 Looper.loop()方法开启消息循环。 ( 4)简要说明 GET 请求与 POST 请求的主要区别。 参考 答 案 : 略。 单元 8 Android的图像操作与图形绘制程序设计 1填空题 ( 1) Bitmap、 BitmapFactory、 Paint、 C
40、anvas、 android.graphics ( 2) getDrawable( int id) ( 3) getBitmap() ( 4) View ( 5) Paint ( 6) Matrix 2选择题 ( 1) Canvas 类可以用来实现各种图形的绘制工作 ,其中可以绘制 矩形 的方法是( )。 D ( 2) 进行图形绘制时需要调用 Canvas 类的方法,以下哪个方法可以用来绘制三角形的三条边?( ) 。 B ( 3) Paint 类用来描述画笔,以下哪个属性 Paint 不能设定?( ) 。 B ( 4)可以以下哪些方法获取资源中的位图?( )。( 多选题 ) AB ( 5) B
41、itmap 提供了一些静态方法来创建新的 Bitmap 对象, 下列哪些属于其常用 静态方法 ( )。( 多选题 ) ABCD 3简答题 ( 1)简述 Bitmap 类常用的方法及其主要功能。 基于 Android Studio 的 移动应用开发任务驱动教程 14 参考 答 案 : 略。 ( 2)简述位图缩放的主要实现方法。 参考 答 案 : 略。 ( 3)简述 Canvas 类用来实现各种图形绘制工作 的方法。 参考 答 案 : 略。 ( 4)简述 Pain 类的常用属性设置方法 。 参考 答 案 : 略。 单元 9 Android的音频与视频应用程序设计 1填空题 ( 1) MediaPl
42、ayer、 SoundPool 类 ( 2) VideoView、 SurfaceView、 VideoView ( 3) View 双缓冲 ( 4) create() setDataSource() ( 5) preparing 2选择题 ( 1) MediaPlayer 播放资源时,需要调用( )方法完成准备工作。 B ( 2) Android 中 MediaPlayer 无法播放( )。 D ( 3) MediaPlayer 对象执行( )之后处于 Started 状态 。 A ( 4) 调用 stop()方法会停止 MediaPlayer 对象播放,并且还会让一个处于 Started,
43、 Paused,Prepared 或 PlaybackCompleted 状态的 MediaPlayer 进入 ( )状态。 B ( 5) 使用 MediaPlayer 播放保存在 SD 卡中的 mp3 文件时( )。( 多选题 ) BC 3简答题 ( 1)说明 MediaPlayer 要播放的文件 的 主要来源 。 参考 答 案 : 略。 ( 2)简要说明 MediaPlayer 对象的生命周期 。 参考 答 案 : 用 new 操作符创建 一个新的 MediaPlayer 对象 或是 对已有对象 调用 reset()方法 之后MediaPlayer 对象 处于 Idle 状态。 调用 se
44、tDataSource()方法会使处于 Idle 状态的对象 转变为Initialized 状态 。 在开始播放之前, MediaPlayer 对象必须要进入 Prepared 状态 , 有同步和异步 两种方式 可以使 MediaPlayer 对象进入 Prepared 状态 。 要开始播放,必须调用 start()方法。当此方法成功返回时, MediaPlayer 的对象处于 Started 状态。当调用 pause()方法并单元 15 返回时,会使 MediaPlayer 对象进入 Paused 状态。调用 stop()方法会停止播放,并且还会让一个处于 StarteD PauseD Pr
45、epared或 PlaybackCompleted状态的 MediaPlayer进入 Stopped状态。 ( 3) 简述 MediaPlayer 对象的 prepareAsync()方法和 prepare()方法的区别及其各自使用场 合 。 参考 答 案 : prepareAsync()方法和 prepare()方法分别是异步加载和同步加载, prepareAsync()方法执行完毕后 MediaPlayer 进入 preparing 状态,而 prepare()方法执行完毕后 MediaPlayer 进入prepared 状态。 prepareAsync()方法一般用于加载网络音频文件等耗时的场景,而加载本地音频的时候一般使用 prepare()就可以了。 ( 4)简要 说明通过 VideoView 类播放视频的主要步骤。 参考 答 案 : 略。