Android中的Handle(句柄)

一、Handle(句柄)是什么?

二、Handle(句柄)有什么用?

 接受子线程发送的数据, 并用此数据配合主线程更新用户界面(UI),用于线程间的通讯。通俗点的解释:当一个应用程序打开的时,Android系统首先会开启一个主线程(即UI线程)。UI线程主要是管理界面上的那些控件,如:文本框,编辑框,按钮等。当点击一个按钮时,UI线程就会分发事件到按钮上,以此来响应接下来的操作(如要绘制一个图,显示一个美女等等)。而如果这个图特复杂,或者这个美女画质特别高(一般画质特别高,即像素特别高,也就是同样大小的方块中,像素点特别特别的多,简单点就是这张图片特别大),此时线程就会为了这个而进行计算,如果5秒钟内还没有计算完的话,界面就会出现假死现象,因为Android系统的Acitivity响应时间为5秒,超过了就要出问题(弹出一个“强制关闭”的对话框)。如果我们把这种耗时的操作放在子线程,就要好的多了。当子线程计算完了(不管花了多久),此时只要发一个消息给主线程,告诉它计算完了,准备好了,那么主线程就可以直接进行绘制或者显示了。为什么不干脆绘制或者将显示的工作放在子线程中进行呢?因为界面只有一个,而这个界面的有关操作已经纳入了主线程中,所以如果子线程要去更改界面的内容的话,就会出现问题。也就是说更新UI只能在主线程中。而Handler的作用就是接收子线程完成耗时操作反馈回来的信息,并用此数据配合主线程更新UI。文艺点的解释:一个正在唱歌的女郎(主线程UI),语音播报(按了一个按钮之类的)下一个节目是吉它表演(按钮的监听事件),此时这个吉它就要后台的人来为她准备,因为她正在唱着歌呢。这时后台的人发现吉它找不到了(耗时操作),怎么办?时间是很宝贵的,如果继续唱歌,难免会被会质疑的,因此,当她唱完歌时,只能跳到下下个节目跳舞的表演(主线程继续往下走),而后台的人则拼命的去找吉它(使用子线程进行耗时操作)。终于,后台的人告诉她“吉它”找到了(收到子线程的反馈信息)。她立马结束了当前的节目。因为之前连表演了好几个节目(不耗时的操作),但人们最期待的还是它的吉它表演。于是,她拿上后台给她的吉它开始表演起吉它演奏来(进行主线程更新操作)。

三、Handle(句柄)咋么用?

猜你喜欢

转载自www.cnblogs.com/AChenWeiqiangA/p/13170200.html