Android第一行代码 第9章.docx

上传人:b****3 文档编号:2945841 上传时间:2022-11-16 格式:DOCX 页数:16 大小:23.62KB
下载 相关 举报
Android第一行代码 第9章.docx_第1页
第1页 / 共16页
Android第一行代码 第9章.docx_第2页
第2页 / 共16页
Android第一行代码 第9章.docx_第3页
第3页 / 共16页
Android第一行代码 第9章.docx_第4页
第4页 / 共16页
Android第一行代码 第9章.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

Android第一行代码 第9章.docx

《Android第一行代码 第9章.docx》由会员分享,可在线阅读,更多相关《Android第一行代码 第9章.docx(16页珍藏版)》请在冰豆网上搜索。

Android第一行代码 第9章.docx

Android第一行代码第9章

第9章 后台默默的劳动者,探究服务

1.在三大智能手机操作系统中,_________________是不支持后台的,当应用程序不在前台运行时就会进入到挂起状态。

_________________则完全支持后台功能,这使得应用程序即使在关闭的情况下仍然可以在后台继续运行。

而_________________则是经历了一个由不支持到支持后台的过程,目前也具备了后台功能。

答:

iOS

Android

WindowsPhone

2.默认情况下,Android所有应用中的组件不但运行在同一进程中,而且也运行在此进程的同一线程中,这一线程被称为_________________。

答:

主线程

3.Android主线程负责分发事件给相应的用户界面组件,包括绘制用户界面的事件,在主线程中应用与AndroidUI交互,因此,主线程又被称为_________________线程。

答:

UI(主线程)

4.在Android应用中,只有_________________线程能够维护和更新UI组件的状态,因此,用户界面是一种单线程模型。

答:

UI

5.当Android应用需要执行一些耗时操作时,如果不将这类操作放在子线程里去运行,就会导致_________________被阻塞,从而影响用户对软件的正常使用。

答:

主线程

6.Android的UI组件不是线程安全的,在子线程中更新UI会导致_________________。

答:

程序崩溃

7.Android多线程编程基本模式与Java多线程编程相同,主要有两种基本模式:

即定义一个继承自_________________的线程类和定义一个实现_________________接口的类。

答:

Thread

Runnable

8.Android系统异步消息通信机制由以下类组成:

_________________、_________________、MessageQueue和Looper。

答:

Message

Handler

9.在Android系统异步消息通信机制中,_________________是在线程之间传递的消息,它可以在内部携带少量的信息,用于在不同线程之间交换数据。

其中,包括交由Handler对象发送的数据,对象中还有可以使用若干附加字段承载数据,主要两个int型字段和一个Object型字段。

答:

Message

10.在Android系统异步消息通信机制中,_________________主要用于发送和处理消息。

发送消息一般使用它的sendMessage()方法,而发出的消息经过一系列地辗转处理后,最终会传递到它的handleMessage()方法中。

答:

Handler

11.在Android系统异步消息通信机制中,_________________是消息队列,用来存放通过Handler发布的消息,消息按照先进先出的队列原则等待被处理。

答:

MessageQueu

12.在Android系统异步消息通信机制中,_________________是MessageQueue的管理者,它驱使消息在队列中前进。

答:

Looper

13.请简述在Handle-Message异步消息通信机制中子线程中进行UI操作的编程逻辑。

答:

(1)首先,在主线程当中创建一个Handler对象,并重写handleMessage()方法。

(2)然后,当子线程中需要进行UI操作时,就创建一个Message对象,并通过Handler将消息发送出去。

(3)之后,这条消息会被添加到MessageQueue的队列中等待被处理,而Looper则会一直尝试从MessageQueue中取出待处理消息,最后分发回Handler的handleMessage()方法中。

(4)由于Handler是在主线程中创建的,所以此时handleMessage()方法中的代码也会在主线程中运行,于是就可以地进行UI操作了。

14.请阅读下面程序片断,根据注释在空白划线处填写代码。

//创建Handler对象,重写其handleMessage()方法,接收Message消息对象

privateHandlerhandler=_________________{

//重写handleMessage()方法

publicvoid_________________(Messagemsg){

_________________{//判断消息中携带的what字段内容

case当what字段内容与常量UPDATE_TEXT的值相符时

text.setText("Nicetomeetyou");//修改text显示文本

break;

default:

break;

}

}

};

答:

(1)newHandler()

(2)handleMessage

(3)switch(msg.what)

15.请阅读下面程序片断,根据注释在空白划线处填写代码。

(1)_________________{//开辟新线程,创建Runnable对象

@Override

publicvoidrun(){//实现run()方法

//新建Message类的对象message

(2)_______________________________;

//设置对象message的what字段值为常量UPDATE_TEXT

(3)_______________________________;

//调用对象handler的sendMessage()方法发送该消息对象

(4)_______________________________;

}

}).(5)__________________;//启动线程

答:

(1)newThread(newRunnable()

(2)Messagemessage=newMessage();

(3)message.what=UPDATE_TEXT

(4)handler.sendMessage(message)

(5)start()

16._________________是AsynchronousTask(异步任务)的缩写,“异步任务”是指一项任务运行在一个_________________线程中,而它的运行结果却由另外一个_________________线程发布,也就是说,同一个类中包含了运行在不同线程中的方法。

答:

AsyncTask

后台

UI

17.请简述AsyncTask在应用中编程逻辑。

答:

(1)首先,定义继承AsyncTask的子类,在其中通常需要实现以下方法;

(2)实现doInBackground()回调方法,这是运行在后台线程中的方法。

(3)为了更新用户界面UI,应该实现onPostExecute()方法,这是运行在前台UI线程中的方法,负责接收doInBackground()方法的返回结果,以便安全地更新UI。

(4)在UI线程中创建AsyncTask类对象,调用AsyncTask对象的execute()方法启动AsyncTask后台任务执行。

18.AsyncTask类最大的特点是同一个类中既有运行于_________________中的方法,也有运行于_________________中的方法,将运行在不同线程中的方法组合在同一个类中,借助_________________或_________________在方法之间传递数据,实现了线程间的数据传递。

答:

主线程

后台线程

方法参数

返回值

19.doInBackground()方法在AsyncTask类对象启动后,运行于_________________中,而它的_________________又作为_________________传递给onPostExecute()方法,同样,onPostExecute()方法在doBackground()运行结束后立即开始运行于_________________中,显然doBackground()和onPostExecute()在运行时间上存在异步关系。

答:

后台线程

返回值

参数

UI主线程

20.在doInBackground()方法中调用_________________方法,可以将后台任务运行过程中产生的一些中间结果作为参数传递给运行在UI线程中onProgressUpdate()方法

答:

publishProgress()

21.但某些情况下,开发者希望变量能适用于多种数据类型,即定义变量的类型为“通用类型”(GenericType),在实际使用时再指定它的具体类型。

这就是_________________的基本思想。

答:

泛型

22.AsyncTask类是个泛型(Generics)类,使用了_________________个泛型(GenericType)参数。

答:

3

23.AsyncTask类的第1个泛型参数规定了执行后台任务的_________________方法的参数类型。

答:

doInBackground()

24.AsyncTask的后台任务doInBackground()方法运行过程中,如果有些中间结果需要传递回UI主线程,可以调用_________________方法,将中间结果作为这个方法的参数传递给运行在主线程中的_________________方法,这两个方法的数据类型就是中间结果数据类型,由AsyncTask类的第_________________个泛型参数指定。

答:

publishProgress()

onProgressUpdate()

2

25.AsyncTask的后台任务方法doInBackground()返回值将会作为参数传递给运行在主线程中的_________________、_________________方法,因此,三者的数据类型都是由AsyncTask类的第_________________个泛型参数指定。

答:

onCancelled()

onPostExecute()

3

26.AsyncTask泛型参数并不是都要用的,当某个类型变量在实际程序中不需要时,定义AsyncTask类时,在相应的泛型参数位置上使用_________________,它相当于一个占位符。

答:

Void

27.调用AsyncTask对象_________________方法可以取消任务。

调用这个方法后,随后调用isCancelled()方法将返回true。

调用这个方法,还会引起在doInBackground()方法返回后,调用_________________而不再调用onPostExecute()方法。

答:

cancel(boolean)

onCancelled(Object)

28.为了保证AsyncTask类正常工作,AsyncTask类实例必须在_________________线程中创建。

答:

UI

29.为了保证AsyncTask类正常工作,execute()方法必须在_________________线程中调用。

答:

UI

30.AsyncTask任务只能执行一次,如果试图第二次去执行任

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1