返回

高效备战Handler面试必会知识点

Android

Handler在Java中的实现

在Java中,Handler是一个用来发送和处理消息的对象,是Android应用程序开发中常用的组件之一。它可以通过HandlerThread来创建Looper,从而形成消息循环,来接收和处理消息。

ThreadLocal MessageQueue异步消息和消息屏障

每个线程都有自己的MessageQueue,Handler将消息发送到MessageQueue中,MessageQueue中的消息会被Looper不断轮询,当消息被轮询到时,Handler会回调对应的方法来处理消息。

异步消息是指在Handler中发送的消息,不会立即被处理,而是会被放入MessageQueue中,等待Looper轮询到时再处理。

消息屏障是指在MessageQueue中设置一个屏障,当屏障后面的消息被轮询到时,会先执行屏障前面的所有消息,然后再执行屏障后面的消息。

MessageQueue.postSyncBarrier

MessageQueue.postSyncBarrier()方法可以设置一个消息屏障,当屏障后面的消息被轮询到时,会先执行屏障前面的所有消息,然后再执行屏障后面的消息。

消息屏障的消费和异步消息的作

当消息屏障被消费时,会执行屏障后面的所有消息。异步消息的作是指在Handler中发送消息,不会立即被处理,而是会被放入MessageQueue中,等待Looper轮询到时再处理。

总结

Handler是Android应用程序开发中常用的组件之一,它可以通过HandlerThread来创建Looper,从而形成消息循环,来接收和处理消息。

MessageQueue是每个线程中存储消息的队列,Handler将消息发送到MessageQueue中,MessageQueue中的消息会被Looper不断轮询,当消息被轮询到时,Handler会回调对应的方法来处理消息。

异步消息是指在Handler中发送的消息,不会立即被处理,而是会被放入MessageQueue中,等待Looper轮询到时再处理。

消息屏障是指在MessageQueue中设置一个屏障,当屏障后面的消息被轮询到时,会先执行屏障前面的所有消息,然后再执行屏障后面的消息。

MessageQueue.postSyncBarrier()方法可以设置一个消息屏障,当屏障后面的消息被轮询到时,会先执行屏障前面的所有消息,然后再执行屏障后面的消息。

当消息屏障被消费时,会执行屏障后面的所有消息。异步消息的作是指在Handler中发送消息,不会立即被处理,而是会被放入MessageQueue中,等待Looper轮询到时再处理。