您的位置 首页 编程

Android之Handler音讯机制

Android中Handle类的主要作用:1.在新启动的线程中发送给消息2.在主线程获取、处理消息为什么要用Handle这样的一个机制:因为在Android系统中UI操作并不是线

Android中Handle类的首要效果:

1.在新发动的线程中发送给音讯

2.在主线程获取、处理音讯

为什么要用Handle这样的一个机制:

由于在Android体系中UI操作并不是线程安全的,假如多个线程并发的去操作同一个组件,或许导致线程安全问题。为了处理这一个问题,android拟定了一条规矩:只允许UI线程来修正UI组件的特点等,也便是说有必要单线程模型,这样导致假如在UI界面进行一个耗时叫长的数据更新等就会构成程序假死现象 也便是ANR反常,假如20秒中没有完结程序就会强制封闭。所以比方另一个线程要修正UI组件的时分,就需要凭借Handler音讯机制了。

Handle发送和处理音讯的几个办法:

1. void handleMessage(Message msg):处理音讯的办法,该办法通常被重写。

2.final boolean hasMessage(int what):查看音讯行列中是否包括有what特点为指定值的音讯

3.final boolean hasMessage(int what ,Object object) :查看音讯行列中是否包括有what好object特点指定值的音讯

4.sendEmptyMessage(int what):发送空音讯

5.final Boolean send EmptyMessageDelayed(int what ,long delayMillis):指定多少毫秒发送空音讯

6.final boolean sendMessage(Message msg):当即发送音讯

7.final boolean sendMessageDelayed(Message msg,long delayMillis):多少秒之后发送音讯

与Handle作业的几个组件Looper、MessageQueue各自的效果:

1.Handler:它把音讯发送给Looper办理的MessageQueue,并担任处理Looper分给它的音讯

2.MessageQueue:选用先进的办法来办理Message

3.Looper:每个线程只要一个Looper,比方UI线程中,体系会默许的初始化一个Looper目标,它担任办理MessageQueue,不断的从MessageQueue中取音讯,并将

相对应的音讯分给Handler处理

在线程中运用Handler的过程:

1.调用Looper的prepare()办法为当时线程创立Looper目标,创立Looper目标时,它的结构器会主动的创立相对应的MessageQueue

2.创立Handler子类的实例,重写HandleMessage()办法,该办法处理除UI线程以外线程的音讯

3.调用Looper的loop()办法来发动Looper

实例

xmlns:tools=http://schemas.android.com/tools

android:layout_width=match_parent

android:layout_height=match_parent

android:paddingBottom=@dimen/activity_vertical_margin

android:paddingLeft=@dimen/activity_horizontal_margin

android:paddingRight=@dimen/activity_horizontal_margin

android:paddingTop=@dimen/activity_vertical_margin

tools:context=.MainActivity >

android:id=@+id/ed1

android:layout_width=match_parent

android:layout_height=wrap_content

android:inputType=number />

android:id=@+id/Ok

android:layout_width=match_parent

android:layout_height=wrap_content

android:layout_below=@id/ed1

android:text=@string/Ok />

android:id=@+id/next

android:layout_width=match_parent

android:layout_height=wrap_content

android:layout_below=@id/Ok

android:text=下一张 />

android:id=@+id/image1

android:layout_width=match_parent

android:layout_height=match_parent

android:layout_below=@id/next

android:src=@drawable/a3 />

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/297297.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部