第十五章 消息循环模型 - 草稿

2018-04-03  本文已影响0人  魏国彬

'Android应用程序主线程在启动完成之后,会主动进入到一个消息循环中,即Android应用主线程是具有消息循环的。

在Android系统中,界面操作是非线程安全的,因此Android系统规定只可以在Android应用程序的主线程中执行与界面相关的操作。

Android应用程序的主线程又称为界面线程,它是负责响应界面事件的。因此,我们要避免在它里面执行耗时的操作,因为执行耗时的操作会导致主线程长时间不能响应界面事件,从而影响用户体验。

我们可以得到三种消息循环模型。第一种是应用程序主线程消息循环模型;第二种是与界面无关的应用程序子线程消息循环模型;第三种是与界面相关的应用程序子线程消息循环模型。我们可以使用ActivityThread、HandlerThread和AsyncTask这三个类来分别实现上述三种消息循环模型。

1. 应用程序主线程消息循环模型

Android应用程序的主线程是以ActivityThread类的静态成员函数main来作为入口函数的。

第十五章 消息循环模型 - 草稿 第十五章 消息循环模型 - 草稿

2. 与界面无关的应用程序子线程消息循环模型

为了创建一个具有消息循环的应用程序子线程,我们可以通过HandleThread类来实现,

第十五章 消息循环模型 - 草稿 第十五章 消息循环模型 - 草稿

3.与界面相关的应用程序子线程消息循环模型

Android系统在应用程序框架层中提供了一个异步任务类AsyncTask,用来将一个涉及界面操作的任务放在一个子线程中执行。用来执行异步任务的子线程虽然没有自己的消息循环,但是它会利用主线程的消息循环来执行与界面相关的操作。

由于这个Handler对象是异步任务类AsyncTask的一个静态成员变量,因此,它是在异步任务类AsyncTask第一次被应用程序使用时创建的。假设应用程序第一次使用异步任务类AsyncTask时是运行在主线程中的,这时候异步任务类AsyncTask的静态成员变量sHandler所指向的一个Handler对象就是在应用程序的主线程中创建的,这意味着它可以用来向应用程序主线程的消息队列发送消息。

第十五章 消息循环模型 - 草稿
上一篇下一篇

猜你喜欢

热点阅读