简述Looper 如何与 Thread 关联的 ?
参考答案:
Looper和Thread在Android中是两个不同的概念,但它们之间存在密切的关系。Looper为线程提供了一个消息循环(message loop)的机制,用于处理和分发消息。每个线程都可以有一个Looper对象,它是线程局部的,通过无限循环从消息队列中取出消息,并将消息分发给对应的Handler进行处理。
要在一个线程中使用Looper,首先需要通过调用Looper.prepare()方法来创建一个Looper对象,并将其与当前线程进行绑定。这样,该线程就拥有了一个消息循环机制。然后,可以使用Handler对象将消息发送到该线程的消息队列中。Looper会负责从消息队列中取出消息,并调用相应的Handler的handleMessage()方法来处理这些消息。
因此,Looper与Thread的关联主要体现在:Looper为线程提供了消息循环的能力,使得线程能够接收和处理来自其他线程或系统的消息。通过结合使用Looper和Handler,可以在线程之间实现通信和消息传递。
需要注意的是,线程默认是没有绑定消息循环的,除了主线程。主线程在创建时会自动关联一个Looper对象,因此可以在主线程中使用Handler来发送和处理消息。而对于非主线程,如果需要使用消息循环机制,则需要显式地创建和绑定Looper对象。