android中的消息机制

android中的消息机制,一般是通过三个概念来理解的:MessageQueue(消息队列),Handler,Looper。我们知道在安卓中通过子线程是不能更新UI的,如果想在子线程中更新界面的话,只能向主线程中发送消息通知主线程更新界面,而消息机制就是在这个背景下产生的。

在Handler源码中我们可以看到,是依赖MessageQueue和Looper两个对象

android中的消息机制_第1张图片

1.当我们需要使用Handler的时候首先要调用Looper.prepare()方法

android中的消息机制_第2张图片

此时会在sThreadLocal中保存一个当前线程的Looper实例,这个实例在接下来的Handler中会使用到

2.以下是创建Handler的源码


android中的消息机制_第3张图片

通过以上代码我们可以看到,首先会获取一个Looper对象,然后进入到myLooper()方法中

android中的消息机制_第4张图片

当使用get()方法的时候会获取到刚刚我们设置的Looper对象。

3.使用创建好的Handler对象发送消息。不管是使用handler.sendMessage或者post等方法,最终会走到以下方法

android中的消息机制_第5张图片
android中的消息机制_第6张图片

该方法最终会将消息添加到消息队列中。消息是添加到队列中了,但是我们如何去获取数据呢?

你可能感兴趣的:(android中的消息机制)