快捷搜索:

图解 Android Handler 线程消息机制

从现实生活中理解线程消息机制

android 有一种叫消息行列步队的说法,这里我们可以这样理解:要是一个地道便是一个消息行列步队,那么里面的每一部汽车便是一个一个消息,这里我们先轻忽掉落超车等各种身分,只那么先辈地道的车将会先出,这个机制跟我们android 的消息机制是一样的。

Android 的线程消息机制

android 在设计的时刻引入了 wince 的消息机制,即将每一个消息发送到行列步队里面,遵照先辈先出原则。发送消息并不会壅闭线程,而接管线程会壅闭线程,这是由于 Android 的Handler 机制,当Handler 处置惩罚完一个 Message 工具才会接着去取下面一个消息进行处置惩罚,如下图:

这里记着:Android里并没有Global的Message Queue数据布局,例如,不合APK里的工具不能透过Massage Queue来互换讯息(Message)。例如:线程A的Handler工具可以通报消息给其余线程,让其余线程B或C等能送消息来给线程A(存于A的Message Queue里)。线程A的Message Queue里的讯息,只有线程A所属的工具可以处置惩罚。

案例阐发:

经典的歌词同步,这时我们不仅要听到优质的歌曲,还要可以有歌词同步,这时另开一条线程来处置惩罚歌词的同步是对照好的办理法子,你可以根据自己的定义,抓取歌曲的duration 在线程中处置惩罚歌词的提高或者退却撤退。。。

Demo 阐发:

下面我们来实现一个Iphone 上的一个经由过程按数字后,数字过多打消的按钮事故。事故的道理如下,事故要的效果是这样的,当长按打消按钮后,数字会逐步打消,过会打消速率会增快,那么实现这个效果我们就必要自己做一个小键盘,我做的键盘效果如下:

我们经由过程点击 来达到这个效果,应用的是android 的线程机制。实今世码如下:

private Thread thread;

private TextView tv_call_no;

protected static Runnable Runablerun = null;

private Handler handler;

private int textLength = 0;

private boolean isStop = true;

您可能还会对下面的文章感兴趣: