«

安卓速通(其实是期末复习~)(终章-教材课后习题篇)

ZealSinger 发布于 阅读:139 期末复习


Android-End-刷题篇

统一采用先答案后解析的格式,前面可能会写上前缀进行区分,后续可能就是空行进行区分

 

第1章 Android基础入门

一、填空题

Dalvik中的Dx工具会把部分class文件转换成___文件。

答案:dex
解析:Dalvik是Android平台上的JVM(Java虚拟机),会把class字节码文件转化为dex文件,必要的时候还会优化为odex文件,书本P4

如果希望在XML布局文件中调用颜色资源,可以使用_调用。

答案:@color/
解析:P24最上面
图片资源@drawable/ 和 @mipmap/
主题和样式资源@style/
布局资源@layout
字符串资源@string/
尺寸资源@dimen/

Android程序入口的Activity是在_文件中注册的。

答案:AndroidManifest.xml
解析:P24,常见的资源路径需要记住

Android中查看应用程序日志的工具是_

答案:LogCat
解析:就这一个记住就就行。
可以额外记一下各个日志级别:
从低到高分别是
verbose - 显示全部信息 - log.v()
debug - 显示调试信息 - log.d()
info - 显示一般信息 - log.i()
warning - 显示警告信息 - log.w()
Error - 显示错误信息 - log.e()
Assert - 显示断言后的错误信息 - log.wtf()

二、判断题

Dalvik是Google公司设计的用于Android平台的虚拟机。(对)

Android应用程序的主要语言是Java。(对)

Android系统采用分层架构,分别是应用程序层、应用程序框架层、核心类库和Linux内核。( 对)

第三代移动通讯技术(3G)包括TD-LTE和FDD-LTE两种制式。( 错)

TD-LTE和FDD-LTE两种制式是第四代的即4G网络

Android程序中,Log.e()用于输出警告级别的日志信息。( 错)

e即error  错误级别 警告级别是warning即log.w()

每个Dalvik虚拟机实例都是一个独立的进程空间,并且每个进程之间不可以通信。( 错)

进程之间肯定是可以通信的,参考计算机网络相关知识

三、选择题

Dalvik虚拟机是基于( )的架构。

A栈 B. 堆 C. 寄存器 D. 存储器

C寄存器
Dalvik就理解为一个JVM,JVM中既存在堆结构也存在栈结构,所以排除AB,而存储器是磁盘,内存这种存东西的,肯定也不是,所以就是C,书本P4下面

Android项目中的主题和样式资源,通常放在哪个目录下?( )

A;res/drawable B. res/layout C. res/values D. assets

C
A是存放图片资源
B存放布局资源
D存储应用程序所需的静态资源文件,例如后面的网络编程中我们需要使用webview的loadUrl展示本地HTML文件,这个HTML文件就应该存放在assets文件中

下列关于AndroidManifest.xml文件的说法中,错误的是( )

A. 它是整个程序的配置文件

B. 可以在该文件中配置程序所需的权限

C. 可以在该文件中注册程序用到的组件

D. 该文件可以设置UI布局

D
布局文件需要放在专门的layout文件中

Dalvik虚拟机属于Android系统架构中的哪一层?( )

A. 应用程序层 B. 应用程序框架层

C. 核心类库层 D. Linux内核层

C
这个记忆吧,能理解的就好理解,不能理解的不好说
第一:JVM是代码和底层交互的东西,会把字节码文件转化为机器码,所以处于程序框架和内核之间的层次,所以算核心类库,第二:并且JVM提供了很多Java方法,从这个角度而言也算是核心类库
第三:核心类库层的定义里面就说包含了运行环境,JVM就是程序的运行环境,从这个角度而言也是属于核心类库层

Android中短信、联系人管理、浏览器等属于Android系统架构中的哪一层?( )

A. 应用程序层 B. 应用程序框架层

C. 核心类库层 D. Linux内核层

A
都是系统自带的应用软件,属于应用程序层

四、简答题

  1. 简述如何搭建Android开发环境。

    Android开发环境的搭建分为3步,具体如下:
    (1)Android Studio工具的下载、安装、以及相关配置。在安装过程中选择该工具的安装路径,以及配置Android Studio相关设置,如Android Studio工具的主题。
    (2)创建模拟器。首先单击ADV Manager的图标,在弹出框中选择模拟设备,接着下载Android SDK System Image,下载完成后创建并打开模拟设备。
    (3)下载SDK。分别在Default Settings窗口中下载SDK版本和SDK Tools工具。

     

  2. 简述Android源代码的编译过程。

    Java源文件经过JDK编译器编译为class文件后,Dalvik虚拟机中的Dx工具会将部分class文件转换成dex文件,dex文件还会在Dalvik虚拟机中进一步优化成odex文件

     

  3. 简述Android系统架构包含的层次以及各层的特点。

    Android系统架构从高到低分为四层,分别为依次是应用程序层(Applications)、应用程序框架层(Application Framework)、核心类库(Libraries)和Linux内核(Linux Kernel),各层的特点具体如下:
    (1)应用程序层:一个核心应用程序的集合,安装在手机中的应用程序都属于这一层。
    (2)应用程序架构层:主要提供了构建应用程序时用到的各种API。例如活动管理器(Activity Manager)。
    (3)核心类库:主要包含了系统库和Android运行环境。
    (4)Linux内核:它为Android设备的各种硬件提供了底层的驱动,如,显示驱动、音频驱动。

     

第2章 Android常见界面布局

 

一、填空题

Android的常见布局都直接或者间接的继承自___类。

ViewGroup

Android中的TableLayout继承自____。

LinearLayout线性布局
P39上面

表格布局TableLayout可以通过____控制表格的行数。

<TableRow> / TableRow
默认情况下,有几个TableRow就有几行,且每个TableRow对应的行数是按照TableRow的定义顺序来的

____布局通过相对定位的方式指定子控件的位置。

RelativeLayout

在R.java文件中,android:id属性会自动生成对应的__类型的值。

int
P33

二、判断题

ViewGroup是盛装界面控件的容器。( 对)

如果在帧布局FrameLayout中放入三个所有属性都相同的按钮,那么能够在屏幕上显示的是第1个被添加的按钮。( 错 )

帧布局默认在父容器左上角依次覆盖,所以被显示的/能被看到的是最后一个被添加的

Android中的布局文件通常放在res/layout文件夹中。( 对)

TableLayout继承自LinearLayout,因此它完全支持LinearLayout所支持的属性。( 对)

LinearLayout布局中的android:layout_weight属性用于设置布局内控件所占的权重。( 对)

weight是权重
width是宽度
height是高度

三、选择题

下列属性中,用于设置线性布局方向的是( )。

A.orientation B.gravity C.layout_gravity D.padding

A
常用属性 控制排列顺序
android:orientation=vertical竖直排列/horizontal水平排列

下列选项中,不属于Android布局的是( )。

A.FrameLayout B.LinearLayout C.Button D.RelativeLayout

C
Button按钮属于控件

帧布局FrameLayout是将其中的组件放在自己的哪个位置?( )

A.左上角 B.右上角 C.左下角 D.右下角

A

对于XML布局文件,android:layout_width属性的值不可以是什么?( )

A.match_parent B.fill_parent

C.wrap_content D.match_content

D
没这个属性

下列关于RelativeLayout的描述,正确的是( )。

A.RelativeLayout表示绝对布局,可以自定义控件的x、y的位置

B.RelativeLayout表示帧布局,可以实现标签切换的功能

C.RelativeLayout表示相对布局,其中控件的位置都是相对位置

D.RelativeLayout表示表格布局,需要配合TableRow一起使用

C

四、简答题

列举Android中的常用布局,并简述他们各自的特点。

Android中有五种常用布局,分别为RelativeLayout(相对布局)、LinearLayout(线性布局)、FrameLayout(帧布局)、TableLayout(表格布局),他们的特点具体如下:
(1)RelativeLayout(相对布局):该布局是通过相对位置的方式指定该布局内子控件的位置。
(2)LinearLayout(线性布局):该布局可通过android:orientation属性指定该布局内的子控件水平和竖直排列。
(3)TableLayout(表格布局):采用行、列的形式来管理控件。他通常搭配TableRow布局使用,一个TableRow代表一行,在TableRow中添加的控件代表一列。
(4)FrameLayout(帧布局):该布局会在屏幕上创建一块空白区域,添加到该区域中的每个子控件占一帧,这些帧会一个一个叠加在一起,后加入的控件会叠加在上一个控件上层。默认情况下,帧布局中的所有控件会与左上角对齐。

 

第3章 Android常见界面控件

 

一、判断题

  1. Android的控件样式,每一个XML属性都对应一个Java方法。(对 )

2.当指定RadioButton按钮的android:checked属性为true时,表示未选中状态。(错 )

true为选中;false为未选中

3.AlertDialog对话框能够直接通过new关键字创建对象。(错 )

AlertDialog的构造方法全部是Protected的,所以不能直接通过new一个AlertDialog来创建出一个AlertDialog
书本P77有提到但是没讲啥,有兴趣的看1https://blog.csdn.net/shandong_chu/article/details/121945487

4.Toast是Android系统提供的轻量级信息提醒机制,用于向用户提示即时消息。( 对)

5.ListView列表中的数据是通过Adapter加载的。( 对)

二、选择题

  1. 在XML布局中定义了一个Button,决定Button按钮上显示文字的属性是()

A.android:value B.android:text

C.android:id D.android:textvalue

B

 

  1. 下列选项中,哪个用于设置TextView中文字显示的大小?( )

A.android:textSize=”18”

B.android:size=”18”

C.android:textSize=’18sp’

D.android:size=”18sp”

C
textSize 数字+单位

 

  1. 使用EditText控件时,当文本内容为空时,如果想做一些提示,那么可以使用的属性是( )

A.android:text B.android:background

C.android:inputType D.android:hint

D
hint的中文翻译就是提示

 

  1. 为了让一个ImageView显示一张图片,可以通过设置的属性是( )

A.android:src B.android:background

C.android:img D.android:value

A

5.下列关于ListView的说法中,正确的是( )

A.ListView的条目不能设置点击事件

B.ListView不设置Adapter也能显示数据内容

C.当数据超出能显示范围时,ListView自动具有可滚动的特性

D.若ListView当前能显示10条,一共有100条数据,则产生了100个View

C
A:可以设置点击事件;
B:ListView展示必须需要适配器用于绑定数据和视图
D:不一定,可以利用视图复用机制减少View的产生

 

  1. CheckBox被选择的监听事件通常使用以下哪个方法()?

A.setOnClickListener B.setOnCheckedChangeListener

C.setOnMenuItemSelectedListener D.setOnCheckedListener

B

 

  1. 当使用EditText控件时,能够使文本框设置为多行显示的属性是( )

A.android:lines B.android:layout_height

C.android:textcolor D.android:textsize

A

 

  1. 下列关于AlertDialog的描述,错误的是()

A.使用new关键字创建AlertDialog的实例

B.对话框的显示需要调用show方法

C.setPositiveButton方法是用来设置确定按钮的

D.setNegativeButton方法是用来设置取消按钮的

A

三、简答题

  1. 简述ListView与RecyclerView的区别

    详细版:
    1、展示效果:RecyclerView控件可以通过LayoutManager类实现横向或竖向的列表效果、瀑布流效果和GridView效果,而ListView控件只能实现竖直的列表效果。
    2、适配器:RecyclerView控件使用的是RecyclerView.Adapter适配器,该适配器将BaseAdapter中的getView()方法拆分为onCreateViewHolder()方法和onBindViewHolder()方法,强制使用ViewHolder类,使代码编写规范化,避免了初学者写的代码性能不佳。
    3、复用效果:RecyclerView控件复用Item对象的工作由该控件自己实现,而ListView控件复用Item对象的工作需要开发者通过convertView的setTag()方法和getTag()方法进行操作。
    4、动画效果:RecyclerView控件可以通过setItemAnimator()方法为Item添加动画效果,而ListView控件不可以通过该方法为Item添加动画效果。

    简答版:
    (1)RecyclerView的可以竖直展示也可以横向展示还可以支持瀑布流效果,而ListView只能支持竖直展示
    (2)RecyclerView的适配器的使用上更加规范严格,强制使用ViewHolder
    (3)RecyclerView的视图服用效果可以通过Item对象配置完成,而ListView的视图复用效果必须开发者通过额外的开发完成
    (4)RecyclerView支持动画效果,可以为Item添加动画,但是ListView不可以

     

  2. 简述实现Button按钮的点击事件的方式有哪几种?

    实现Button按钮的点击事件一共有3种方式,具体如下:
    1、在布局文件中指定onClick属性的方式设置点击事件。
    2、使用匿名内部类的方式设置点击事件。
    3、通过为Activity实现OnClickListener接口的方式设置点击事件。

     

  3. 简述AlertDialog对话框的创建过程。

    AlertDialog对话框的创建过程如下:
    1、 调用AlertDialog的静态内部类Builder创建AlertDialog.Builder的对象。
    2、 调用AlertDialog.Builder的setTitle()和setIcon()方法分别设置AlertDialog对话框的标题名称和图标。
    3、 调用AlertDialog.Builder的setMessage()、setSingleChoiceItems()或者setMultiChoiceItems()方法设置AlertDialog对话框的内容为简单文本、单选列表或者为多选列表。
    4、 调用AlertDialog.Builder的setPositiveButton()和setNegativeButton()方法设置AlertDialog对话框的确定和取消按钮。
    5、 调用AlertDialog.Builder的create()方法创建AlertDialog对象。
    6、 调用AlertDialog对象的show()方法显示该对话框。
    7、 调用AlertDialog对象的dismiss()方法取消该对话框。

     

第4章 程序活动单元Activity

一、填空

  1. Activity的启动模式包括standard、singleTop、singleTask和_____。

    singlerInstance
    P94

     

2.启动一个新的Activity并且获取这个Activity的返回数据,需要重写____方法。

startActivityForResult()

3.发送隐式Intent后,Android系统会使用____匹配相应的组件。

IntentFilter
通过IntentFilter匹配action,data,category属性

4.在清单文件中为Activity添加<intent-filter>标签时,必须添加的属性名为____,否则隐式Intent无法开启该Activity。

<category android:name="android.intent.category.DEFAULT"/>
P85

 

  1. Activity的____方法用于关闭当前的Activity。

    finish()

     

二、判断题

1.如果Activity不设置启动模式,则默认为standard。( 对)

  1. Fragment与Activity的生命周期方法是一致的。( 错)

    不一致
    Fragment比Actviity多了
    onAttach()
    onCreateView()
    onActivityVreate()
    onDestoryView()
    onDetach()
    书本P95 96

     

3.如果想要关闭当前的Activity,可以调用Activity提供的finish()方法。( 对)

  1. <intent-filter>标签中间只能包含一个action属性。( 错)

    可以有多个action  匹配到一个就行

     

  2. 默认情况下,Activity的启动方式是standard。( 对)

三、选择题

1.下列选项中,不属于Android四大组件的是( )。

A.Service B.Activity C.Handler D.ContentProvider

C

2.下列关于Android中Activity管理方式的描述中,正确的是( )。

A.Android以堆的形式管理Activity

B.Android以栈的形式管理Activity

C.Android以树的形式管理Activity

D.Android以链表的形式管理Activity

B

3.下列选项中,哪个不是Activity生命周期方法( )。

A.onCreate() B.startActivity() C.onStart() D.onResume()

B
B是程序中启动Activity的方法,本身这个方法不属于器生命周期方法

4.下列方法中,哪个是启动Activity的方法( )。

A.startActivity() B.goToActivity() C.startActivityResult() D.以上都是

A
注意C应该要是startActivityForResult()

5.下列关于Intent的描述中,正确的是( )。

A.Intent不能够实现应用程序间的数据共享

B.Intent可以实现界面的切换,还可以在不同组件间直接进行数据传递

C.使用显式Intent可以不指定要跳转的目标组件

D.隐式Intent不会明确指出需要激活的目标组件,所以无法实现组件之间的数据跳转

B

四、简答题

  1. 简述Activity的生命周期的方法及什么时候被调用。

    七个生命周期方法
    1、onCreate():Activity创建时调用,通常做一些初始化设置。
    2、onStart():Activity即将可见时调用。
    3、onResume():Activity获取焦点时调用。
    4、onPause():当前Activity被其他Activity覆盖或屏幕锁屏时调用。
    5、onStop():Activity对用户不可见时调用。
    6、onDestroy():Activity销毁时调用。
    7、onRestart():Activity从停止状态到再次启动时调用。

     

  2. 简述Activity的四种启动模式及其特点。

    四种模式:standard ; singleTop ;singleTask ;singleInstance
    特点:
    1、standard:每启动一个Activity就会在栈顶创建一个新的实例。
    2、singleTop:当被启动的Activity位于栈顶时,复用该Activity实例。
    3、singleTask:当被启动的Activity在栈中存在实例时,会直接复用此Activity实例,并把当前Activity上面的所有实例弹出栈。
    4、singleInstance:会启动一个新的任务栈来管理该Activity。

     

  3. 简述Activity、Intent、IntentFilter的作用

    Activity是一个负责和用户交互的组件,每个安卓应用程序都会用activity展示界面和处理界面上面的一些控件的事件
    Intent是意图,用于Acitviity之间的切换,是组件交换的重要桥梁,也是组件之间数据交换的途径
    IntentFilter为过滤器,当发送一个隐式Intent后,Android系统会将它与程序中的每一个组件的过滤器进行匹配,匹配属性有 action、data、category,需要这三个属性都匹配成功才能唤起相应的组件。

     

第5章 数据存储

 

一、判断题

1.SQLite是Android自带的一个轻量级的数据库,支持基本SQL语法。(对 )

2.Android中的文件存储方式,分为内部存储方式和外部存储方式。( 对)

3.使用openFileOutput()方式打开应用程序的输出流时,只需要指定文件名。(错 )

有两个参数 一个为文件名  一个为输出模式mode

4.当Android SDK版本低于23时,应用程序想要操作SD卡数据,必须在清单文件中添加权限。( 对)

5.SQLiteDatabase类的update()方法用于删除数据库表中的数据。( 错)

6.SQLite数据库的事务操作满足原子性、一致性、隔离性和持续性。( 对)

二、选择题

1.下列关于SharedPreferences存取文件的描述中,错误的是( )。

A.属于移动存储解决方式

B.SharedPreferences处理的就是key-value对

C.读取xml的路径是/sdcard/shared_prefs

D.文本的保存格式是xml

C
data/data/<packagename>/shared_prefs

2.下列选项中,不属于getSharedPreferences方法的文件操作模式参数是( )。

A.Context.MODE_PRIVATE

B.Context.MODE_PUBLIC

C.Context.MODE_WORLD_READABLE

D.Context.MODE_WORLD_WRITEABLE

B

3.下列方法中,( )方法是sharedPreferences获取其编辑器的方法?

A.getEdit() B.edit() C.setEdit() D.getAll

B

4.Android对数据库的表进行查询操作时,会使用SQLiteDatabase类中的( )方法?

A.insert() B.execSQL() C.query() D.update()

C

5.下列关于SQLite数据库的描述中,错误的是( )

A.SqliteOpenHelper类有创建数据库和更新数据库版本的的功能。

B.SqliteDatabase类是用来操作数据库的。

C.每次调用SqliteDatabase的getWritableDatabase方法时,都会执行SqliteOpenHelper的onCreate()方法。

D.当数据库版本发生变化时,会调用SqliteOpenHelper的onUpgrade()方法更新数据库。

C
只有第一次会

6.下列初始化SharedPreferences的代码中,正确的是( )

A.SharedPreferences sp = new SharedPreferences();

B.SharedPreferences sp = SharedPreferences.getDefault();

C.SharedPreferences sp = SharedPreferences.Factory();

D.SharedPreferences sp = getSharedPreferences();

D

三、简答题

1.简述数据库事务的4个基本要素。

AICD
原子性:表示事务是一个不可再分割的工作单位,事务中的操作要么全部成功,要么全部失败回滚。
一致性:表示事务开始之前和结束之后,数据库的完整性没有被破坏。也就是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
隔离性:表示并发的事务是相互隔离的,也就是一个事务内部的操作都必须封锁起来,不会被其他事务影响到。
持久性:表示事务一旦提交后,该事务对数据做的更改便持久保存在数据库中,并不会被回滚,即使出现了断电等事故,也不会影响数据库中的数据。

2.简述Android数据存储的方式。

文件存储(内部和外部) + sharedPreferences + SQLite +ContentProvider +网络存储
  1.  

 

第6章 使用内容提供者共享数据

一、判断题

Uri主要有三部分组成,分别是scheme、authority和path。(对 )

内容观察者ContentObserver用于观察指定URI代表的数据的变化。( 对)

内容提供者主要功能是实现跨程序共享数据的功能。( 对)

Android中通过内容解析者手机通讯录数据库的内容时,不需要加入读取手机通讯录的权限。( 错)

Android系统的UriMatcher类用于匹配Uri。(对 )

二、选择题

如果一个应用程序想要访问另外一个应用程序的数据库,那么需要通过()实现。

A.BroadcastReceiver B.Activity C.ContentProvider D.AIDL

C

下列方法中,哪个方法能够得到ContentResolver的实例对象。( )

A.new ContentResolver() B.getContentResolver()

C.newInstance() D.ContentUris.newInstance()

B

自定义内容观察者时,需要继承的类是( )。

A.BaseObserver B.ContentObserver C.BasicObserver D.DefalutObserver

B

查询手机系统短信时,内容提供者对应的Uri为( )。

A.Contacts.Photos.CONTENT_URI

B.Contacts.People.CONTENT_URI

C.“content://sms/”

D.Media.EXTERNAL_CONTENT_URI

C

下列关于ContentProvider的描述,错误的是( )

A.ContentProvider 是一个抽象类,只有继承后才能使用

B.ContentProvider只有在AndroidManifest.xml文件中注册后才能运行

C.ContentProvider为其他应用程序提供了统一的访问数据库的方式

D.以上说法都不对

这个题目不是很确定 感觉选C
AB对的
ContentProvider的核心作用是统一数据访问接口,但其数据源不限于数据库(如SQLite)。它可以封装文件、网络数据或其他存储形式的数据。因此,将功能限定为“数据库”的描述不准确

三、简答题

简述内容提供者的工作原理

内容提供者即COntentProvider
假设B程序需要操作A程序数据库中的数据,一般需要A程序使用ContentProvider
暴露数据,才能被其他程序操作。B程序通过ContentResolver操作A程序暴露出来的数据,而A程序会将操作结果返回给ContentResolver,然后ContentResolver再将操作结果返回给B程序。

简述内容观察者的工作原理。

内容观察者即ContentObserver
监听对应URL的数据变化,如果发生了变化就会回调onChange()方法

 

 

第7章 广播机制

一、填空题

  1. ____用来监听来自系统或者应用程序的广播。

    广播接收者 / BroadcastReceiver

     

  2. 广播接收者的注册方式有两种,分别是__和__

    动态注册 ; 静态注册

     

二、判断题

Broadcast表示广播,它是一种运用在应用程序之间传递消息的机制。(对 )

在清单文件注册广播接收者时,可在<intent-filter>标签中使用priority属性设置优先级别,属性值越大优先级越高。( 对)

有序广播的广播效率比无序广播更高。(错 )

无序效率更高

动态注册的广播接收者的生命周期依赖于注册广播的组件。(对 )

Android中广播接收者必须在清单文件里面注册。( 错)

动态注册可以不需要配置清单文件

三、选择题

下列选项中,关于广播类型的说法,错误的是( )(多选)

A、Android中的广播类型分有序广播和无序广播

B、无序广播是按照一定的优先级进行接收

C、无序广播可以被拦截,可以被修改数据

D、有序广播按照一定的优先级进行发送

BC

广播机制作为Android组件间的通信方式,使用的场景有哪些( )(多选)

A、在同一个APP内部的同一组件内进行消息通信

B、不同APP的组件之间进行消息通信

C、在同一个APP内部的不同组件之间进行消息通信(单个进程)

D、在同一个APP具有多个进程的不同组件之间进行消息通信

ABCD

四、简答题。

简述广播机制的实现过程。

1.广播接收者通过Binder机制在AMS(Activity Manager Service)中进行注册。
2. 广播发送者通过Binder机制向AMS发送广播。
3. AMS查找符合相应条件(IntentFilter/Permission)的广播接收者,将广播发送到相应的消息循环队列中。
4. 执行消息循环时获取到发送的广播,然后回调广播接收者中的onReceive()方法并在该方法中进行相关处理。

简述有序广播和无序广播的区别。

(1)有序广播的接收者是顺序执行的。
有序广播按照广播接收者声明的优先级别被依次接收。当在高级别的广播接收者逻辑执行完毕之后,广播才会继续传递。当优先级相同时,先注册的广播接受者优先执行。
(2)无序广播是完全异步执行的。
当发送无序广播时,所有监听这个广播的广播接收者都会接收到此广播消息,但接收和执行的顺序不确定。
(3)拦截广播
有序广播的接收者可拦截广播。如果优先级较高的广播接收者将广播终止,那么广播将不再向后传递。而无序广播则不能被拦截。
(4)效率
有序广播的效率比无序广播低。

 

第8章 服务

 

一、填空题

  1. 如果想要停止bindService()方法启动的服务,需要调用_方法。

    unbindService()

     

  2. Android系统的服务的通信方式分为__

    本地服务通信和远程服务通信

     

  3. 远程服务通过_实现服务的通信

    AIDL

     

二、判断题

1.Service服务是运行在子线程中的。( 错)

后台执行 不是子线程还是主线程中执行的 只是没有界面

2.不管使用哪种方式启动Service,它的生命周期都是一样的。( 错)

startService()和bindService()生命周期不太一样
第一个是完全自己掌握
第二个会和调用者组件绑定

3.使用服务的通信方式进行通信时,必须保证服务是以绑定的方式开启的,否则无法通信。(错 )

远程服务通信不一定需要onBind的方式启动
但是本地服务通信需要

4.一个组件只能绑定一个服务。( 错)

不止一个 一个组件可以绑定多个服务 ; 多个组件可以绑定一个服务

5.远程服务和本地服务都运行在同一个进程中。( 错)

远程服务和本地服务是否运行在同一进程取决于是否显式指定android:process属性。默认情况下,本地服务在主进程,远程服务在独立进程。因此,两者通常不在同一进程运行

三、选择题

1.如果通过bindService方式开启服务,那么服务的生命周期是( )

A.onCreate()→onStart()→onBind()→onDestroy()

B.onCreate()→onBind()→onDestroy()

C.onCreate()→onBind ()→onUnBind()→onDestroy()

D.onCreate()→onStart ()→onBind ()→onUnBind()→onDestroy()

C

2.下列关于Service服务的描述中,错误的是( )

A.Service是没有用户可见的界面,不能与用户交互

B.Service可以通过Context.startService()来启动

C.Service可以通过Context.bindService()来启动

D.Service无需在清单文件中进行配置。

D

3.下列关于Service的方法描述,错误的是( )

A.onCreate()表示第一次创建服务时执行的方法

B.调用startService()方法启动服务时执行的方法是onStartCommand()

C.调用bindService()方法启动服务时执行的方法是onBind()

D.调用startService ()方法断开服务绑定时执行的方法是onUnbind()

D

四、简答题

  1. 简述Service的两种启动方式的区别。

  2. Service的启动方式分别可以调用startService()、bindService()方法,这两个启动方式的区别如下所示:
    (1)生命周期
    startService():使用该方法开启Service时,执行的生命周期方法依次为onCreate()、onStartCommand()、onDestroy()。
    bindService():使用该方法开启Service时,执行的生命周期方法依次为:onCreate()、onBind()、onUnbind()、onDestroy()。
    (2)停止服务的方法
    startService():调用stopSelf()、stopService()方法停止服务。
    bindService():调用unbindService()方法停止服务。
    (3)组件的关联
    startService():当一个组件通过此方法开启服务时,服务与开启该组件没有关联,即使开启服务的组件被销毁,服务依旧运行。
    bindService():当一个组件通过此方法开启服务时,服务会与该组件绑定,组件一旦被销毁,该服务也会被销毁。

     

  3. 简述Service的生命周期。

使用不同的方式启动服务,其生命周期会不同。开启服务的方法分别为startService()、bindService()
当通过startService()方法启动服务时,执行的生命周期方法依次为onCreate()、onStartCommand()、onDestroy()
当通过bindService()方法启动服务时,执行的生命周期方法依次为onCreate()、onBind()、onUnbind()、onDestroy()
其生命周期方法的具体含义如下:
onCreate ():第一次创建服务时执行的方法。
onStartCommand():调用startService()方法启动服务时执行的方法。
onBind():调用bindService()方法启动服务时执行的方法。
onUnbind():调用unBindService()方法断开服务绑定时执行的方法。
onDestory():服务被销毁时执行的方法。

 

第9章 网络编程

一、填空题

  1. HttpURLConnection继承自___类。

    URLConnection

     

  2. Android系统默认提供的内置浏览器使用的是___引擎

    WebKit

     

  3. Android中解析JSON数据的org.json包中,最重要的两个类是___和JSONArray

    JSONObject

     

二、判断题

  1. HttpURLConnection用于发送HTTP请求和获取HTTP响应。( 对 )

  2. Android中的WebView控件是专门用于浏览网页的,其使用方法与其他控件一样。(对 )

  3. Android中要访问网络,必须在AndroidManifest.xml中注册网络访问权限。( 对 )

  4. HttpURLConnection是抽象类,不能直接实例化对象,需要使用URL的openConnection()方法获得。(对 )

  5. 使用HttpURLConnection进行HTTP网络通信时,GET方式发送的请求只能发送大小在1024个字节内的数据。( 对)

  6. Android内置的浏览器使用的是WebView引擎。( 错)

    WebView是控件  引擎是WebKit

     

三、选择题

  1. Android针对HTTP实现网络通信的方式主要包括( )。(多选)

A.使用HttpURLConnection实现

B.使用ServiceConnection实现

C.使用HttpClient实现

D.使用HttpConnection实现

ABCD

 

  1. Android中的HttpURLConnection中的输入/输出流操作被统一封装成了( )。

(多选)

A.HttpGet B.HttpPost C.HttpRequest D.HttpResponse

ABD

四、简答题

简述使用HttpURLConnection 访问网络的步骤

使用HttpURLConnection访问网络的步骤如下:
(1)创建URL对象。
(2)调用URL对象的openConnection()方法获取HttpURLConnection对象。
(3)调用setRequestMethod()方法设置http请求的方式。
(4)通过setConnectTimeout()方法设置连接的超时时间。
(5)调用getInputStream()方法获取服务器返回的输入流。
(6)最后调用disconnect()方法关闭http连接。

 

Android Java Kotlin 期末复习 编程



收到1条评论
avatar
哈哈哈 1 个月前
煮包这更新速度比网文小说快了
回复