1、Android 移动应用基础教程习题答案第 1 章 Android 基础入门一、 填空题1、 Linux、操作系统2、 应用程序层、应用程序框架层、核心类库、Linux 内核3、 adb start-server4、 java 代码文件5、 打包成.apk 文件二、 判断题1、 2、 3、4、5 、三、 选择题1、D 2、ABC 3、B 4、C 5、A 四、简答题1、Android 体系结构总共包含四层,分别是: 应用程序层:设备上安装的软件应用都属于这一层 应用程序框架层:包含应用 API 核心类库:包含系统库和运行环境,系统库包含了底层 C 代码;运行环境包含了 Java的核心库和 Dal
2、vik 虚拟机 Linux 内核:提供 Android 的底层驱动。2、SDK 包含了 Android 的 API 源代码、各种工具、示例工程、用到的各种资源模板等。第 2 章 Android UI 开发一、 填空题1、 RelativeLayout、LinearLayout、TableLayout、GirdLayout、FrameLayout、AbsoluteLayout2、 android:layout_alignParentLeft3、 水平、竖直4、 RelativeLayout5、 显示全部信息、显示调试信息、显示一般信息、显示警告信息、显示错误信息二、 判断题1、2、3、4、5、三
3、、 选择题1、D 2、B 3、C 4、D 5、B四、 简答题1、使用 Toast 可以直接调用 Tosast 的静态方法:Toast.makeText(this, text, duration).show();也可以创建出 Toast 对象,如:Toast toast = new Toast(this);toast.setText(“提示信息“);toast.show();2、一共有六种布局,它们的作用分别是: RelativeLayout:相对于其他控件或者容器决定控件的位置; LinearLayout:使控件以竖直或者水平方向排列; TableLayout:使控件以表格形式排列; Gird
4、Layout:能使控件交错显示,能够避免因布局嵌套对设备性能的影响,更利于自由布局的开发; FrameLayout:使控件按照创建顺序 在屏幕的左上角重叠显示; AbsoluteLayout:通过绝对的坐标控制控件摆放的位置。第 3 章 Activity一、 填空题1、 运行状态、暂停状态、停止状态2、 standard、singleTop 、singleTask、singleInstance3、 隐式 Intent、显示 Intent4、 onRestart()5、 setResult()二、 判断题1、2、3、4、5 、三、 选择题1、A 2、D 3、D 4、C 5、C四、简答题1、四种启
5、动模式分别是: Standard:每当启动一个新的 Activity,它就会进入任务栈,并处于栈顶的位置,对于使用 standard 模式的 Activity,系统不会判断该 Activity 在栈中是否存在,每次启动都会创建一个新的实例。 SingleTop:与 standard 类似,不同的是,当启动的 Activity 已经位于栈顶时,则直接使用它不创建新的实例。如果启动的 Activity 没有位于栈顶时,则创建一个新的实例位于栈顶。 SingleTask:创建的 Activity 只存在一个实例。已经存在则直接使用该实例,并将当前Activity 之上的所有 Activity 出栈,
6、如果没有发现则创建一个新的实例。 singleInstance:启动一个新的任务栈管理 Activity2、Activity 三种状态分别是: 运行状态:该状态下可以对界面进行操作 暂停状态:界面可见但不具有焦点无法点击 停止状态:界面不可见,一般在停止状态时保存数据以防止程序被系统强制杀死。第 4 章 数据存储一、 填空题1、 可保持或传输2、 内存、SD 卡3、 DOM、SAX 、PULL4、 配置参数5、 文件、Sharedpreferences、Sqlite、网络、ContentProvider二、 判断题1、2、 3、 4、 5、三、 选择题1、C 2、D 3、D 4、ABD 5、C
7、四、简答题1、五种存储方式各自的特点分别是: 文件存储:可以存储较大文件,以 IO 流形式传输数据。 Sqlite:占用内存小,所有文件都存放在单一文件中。 网络:通过网络将数据传输到服务器存储,避免了客户端的安全隐患。 Sharedpreference:使用方便,可以存储配置信息,以键值对的形式存于内存中 ContentProvider:提供自身暴漏的数据给第三方应用使用,统一了数据访问格式,以数据库形式保存数据。2、使用 Sharedpreference 储存数据时因为它本身没有写文件的功能,因此需要使用 Editor 对象将数据存入内存,比如:SharedPreferences sp =
8、 getSharedPreferences(“config“, 0);Editor editor = sp.edit();editor.putString(“a“, “a“);mit();第 5 章 SQLite 数据库一、 填空题1、 BaseAdapter、SimpleAdapter、ArrayAdapter2、 SQLiteOpenHelper3、 onCreate()、onUpgrade()4、 Cursor、close()5、 Id二、 判断题1、 2、 3、 4、 5、三、 选择题1、AC 2、B 3、B 4、C 5、B四、简答题1、首先创建一个类继承 SQLiteOpenHelp
9、er,重写 onCreate()方法并在该方法中创建表,使用创建出的 SQLiteOpenHelper 的子类对象的 getWritableDatabase()方法获得一个可读写的数据库对象。2、四个抽象方法分别是: getCount:得到 Item 的总数 getItem:根据 position 得到某个 Item 的对象 getItemId:根据 position 得到某个 Item 的 id getView:得到相应 position 对应的 Item 视图,position 当前 Item 的位置,convertView复用的 View 对象。第 6 章 内容提供者一、 填空题1、 U
10、riMatcher2、 onChange()3、 insert、delete、update 、query4、 保存、检索5、 ContentResolver二、 判断题1、 2、 3、 4、 5、三、 选择题1、AC 2、C 3、ACD 4、ABD 5、C四、简答题1、通过 ContentProvider 共享数据统一了数据访问方式,使用起来更规范,通过数据库存储并指定了 URI,只有通过特定 URI 才能访问数据,使数据更安全。2、ContentProvider 可以共享自己的数据给外部应用访问,要访问 ContentProvider 暴漏的数据就要用到 ContentResolver。而
11、ContentObserver 就相当于中间人的角色,它可以事实监听ContentProvider 的数据是否发生变化,如果发生变化就会触发 onChange()方法,Contentresolver 可以在 onChange()方法中查询的哪些数据发生了变化再对数据进行操作。第 7 章 广播接收者一、 填空题1、 receiver 2、 abortBroadcast()3、 有序广播、无序广播4、 registerReceiver、unregisterReceiver5、 sendOrderedBroadcast();二、 判断题1、 2、 3、 4、 5、三、 选择题1、A 2、AC 3、B
12、 4、C 5、B四、简答题1、 注册广播有两种方式。 非常驻型广播:这种广播依赖于注册广播的组件的生命周期,例如,在 Activity 中注册广播接收者,当 Activity 销毁后广播也随之被移除。 常驻型广播:当应用程序关闭后,如果接收到其他应用程序发出的广播,那么该程序会自动重新启动。但是 4.0 以上的系统中如果安装了应用但是没有打开过,当有广播发出时应用也接收不到广播信息。2、 拨打电话:发送短信:设备开机:电池电量低:第 8 章 服务一、 填空题1、 Service2、 onBind()3、 4、 startService()、bindService()”5、 AIDL二、 判断题
13、1、 2、 3、 4、 5、三、 选择题1、D 2、ABC 3、AC 4、AC 5、BD四、简答题1、使用 AIDL 接口实现通信的步骤如下:1) 在需要被调用的服务的项目中创建 AIDL 接口;2) 创建相应的服务3) 创建第二个项目用于调用服务。将服务中的 aidl 接口拷贝到第二个项目中,包名要和服务中的包名一致。2、服务两种启动方式,分别是: Start 方式启动:服务与调用者没有绝对关联,当调用者关闭后服务还会一直在后台运行。 Bind 方式启动:服务与调用者的生命周期所关联,当调用者关闭时,服务也会关闭。第 9 章 网络编程一、 填空题1、 Socket 通信、HTTP 通信、UR
14、L 通信、WebView。2、 HTTP 请求3、 HttpURLConnection、HttpClient4、 GET、POST5、 线程间通信二、 判断题1、 2、 3、 4、 5、三、 选择题1、A 2、D 3、C 4、D 5、B四、简答题1、使用 HttpClient 访问网络的步骤如下:1) 创建 HttpClient 对象;2) 指定访问网络的方式,创建一个 HttpPost 对象或者 HttpGet 对象;3) 如果需要发送请求参数,可调用 HttpGet、HttpPost 都具有的 setParams()方法。对于HttpPost 对象而言,也可调用 setEntity()方法
15、来设置请求参数;4) 调用 HttpClient 对象的 execute()方法访问网络,并获取 HttpResponse 对象;5) 调用 HttpResponse.getEntity()方法获取 HttpEntity 对象,该对象包装了服务器的响应内容。也就是我们所请求的数据。2、Handler 机制四个关键对象的作用如下:1) MessageMessage 是在线程之间传递的消息,它可以在内部携带少量的信息,用于在不同线程之间交换数据。Message 的 what 字段可以用来携带一些整型数据,obj 字段可以用来携带一个 Object 对象。2) HandlerHandler 顾名思义
16、就是处理者的意思,它主要用于发送消息和处理消息。一般使用Handelr 对象的 sendMessage()方法发送消息,发出的消息经过一系列的辗转处理后,最终会传递到 Handler 对象的 handlerMessage()方法中。3) MessageQueueMessageQueue 是消息队列的意思,它主要用来存放通过 Handler 发送的消息。通过Handler 发送的消息会存在 MessageQueue 中等待处理。每个线程中只会有一个MessageQueue 对象。4) LooperLooper 是每个线程中的 MessageQueue 的管家。调用 Looper 的 loop()
17、方法后,就会进入到一个无线循环中。然后每等发现 MessageQueue 中存在一条消息,就会将它取出,并传递到 Handler 的 HandlerMessage()方法中。此外每个线程也只会有一个 Looper 对象。在主线程中创建 Handler 对象时,系统已经为我们创建了 Looper 对象,所以不用手动创建 Looper 对象,而在子线程中 Handler 对象,我们需要调用 Looper.loop()方法开启消息循环。第 10 章 高级编程一、 填空题1、 Matrix2、 SensorManager 3、 Bitmap、BitmapFactory 、Paint、Canvas4、
18、onAttach()、onCreateView()、onActivityCreate()、onDestroyView()、onDetach()5、 Frame 逐帧动画二、判断题1、 2、 3、 4、 5、三、选择题1、BC 2、B 3、C 4、B 5、AB四、简答题1、Android 中有两种动画,分别如下:1) Tween 动画通过对 View 中的内容进行一系列的图形变换来实现动画效果,其中图形变化包括平移、缩放、旋转、改变透明度等。补间动画的效果可以通过 XML 文件来定义也可以通过编码方式来实现,通常情况下以 XML 形式定义的动画都会放置在程序的 res/anim(自定义的)文件夹
19、下。2) Frame 动画逐帧动画就是按顺序播放事先准备好的静态图像,利用人眼的“视觉暂留”原理,给用户造成动画的错觉。放胶片看电影的原理与逐帧动画的原理是一样的,它们都是一张一张地播放事先准备好的静态图像。2、Fragment 的生命周期有三种状态,具体如下:1) 运行状态当一个 Fragment 是可见的,并且它所关联的 Activity 正处于运行状态,那么该Fragment 也处于运行状态。2) 暂停状态当一个 Activity 进入暂停状态(另一个未占满屏幕的 Activity 并添加到了栈顶时),与它相关联的可见 Fragment 也会进入暂停状态。3) 停止状态当一个 Activity 进入停止状态时,与它相关联的 Fragment 就会进入到停止状态。或者通过调用 FragmentTransaction 的 remove()、replace()方法将 Fragment 从 Activity 中移除。如果在事务提交之前调用 addToBackStack()方法,这时的 Fragment 也会进入到停止状态。