日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android开发中Handler的经典总结

發(fā)布時間:2025/5/22 Android 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发中Handler的经典总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

當(dāng)應(yīng)用程序啟動時,Android首先會開啟一個主線程(也就是UI線程),主線程為管理界面中的UI控件,進(jìn)行事件分發(fā)。

AD:

一、Handler的定義:

主要接受子線程發(fā)送的數(shù)據(jù), 并用此數(shù)據(jù)配合主線程更新UI。

解釋:當(dāng)應(yīng)用程序啟動時,Android首先會開啟一個主線程 (也就是UI線程) , 主線程為管理界面中的UI控件, 進(jìn)行事件分發(fā), 比如說, 你要是點(diǎn)擊一個 Button ,Android會分發(fā)事件到Button上,來響應(yīng)你的操作。? 如果此時需要一個耗時的操作,例如: 聯(lián)網(wǎng)讀取數(shù)據(jù),? ? 或者讀取本地較大的一個文件的時候,你不能把這些操作放在主線程中,如果你放在主線程中的話,界面會出現(xiàn)假死現(xiàn)象, 如果5秒鐘還沒有完成的話,會收到Android系統(tǒng)的一個錯誤提示? "強(qiáng)制關(guān)閉"。? 這個時候我們需要把這些耗時的操作,放在一個子線程中,因?yàn)樽泳€程涉及到UI更新,,Android主線程是線程不安全的, 也就是說,更新UI只能在主線程中更新,子線程中操作是危險的。 這個時候,Handler就出現(xiàn)了。,來解決這個復(fù)雜的問題 ,由于Handler運(yùn)行在主線程中(UI線程中),? 它與子線程可以通過Message對象來傳遞數(shù)據(jù), 這個時候,Handler就承擔(dān)著接受子線程傳過來的(子線程用sedMessage()方法傳弟)Message對象,(里面包含數(shù)據(jù))? , 把這些消息放入主線程隊(duì)列中,配合主線程進(jìn)行更新UI。

二、Handler一些特點(diǎn)

handler可以分發(fā)Message對象和Runnable對象到主線程中, 每個Handler實(shí)例,都會綁定到創(chuàng)建他的線程中(一般是位于主線程),它有兩個作用:

(1)安排消息或Runnable 在某個主線程中某個地方執(zhí)行;

(2)安排一個動作在不同的線程中執(zhí)行。

Handler中分發(fā)消息的一些方法

post(Runnable)

postAtTime(Runnable,long)

postDelayed(Runnable long)

sendEmptyMessage(int)

sendMessage(Message)

sendMessageAtTime(Message,long)

sendMessageDelayed(Message,long)

以上post類方法允許你排列一個Runnable對象到主線程隊(duì)列中,

sendMessage類方法, 允許你安排一個帶數(shù)據(jù)的Message對象到隊(duì)列中,等待更新。

三、Handler實(shí)例

子類需要繼承Hendler類,并重寫handleMessage(Message msg) 方法, 用于接受線程數(shù)據(jù)。

以下為一個實(shí)例,它實(shí)現(xiàn)的功能為:通過線程修改界面Button的內(nèi)容

  • public?class?MyHandlerActivity?extends?Activity?{?
  • ????Button?button;?
  • ????MyHandler?myHandler;?
  • ?
  • ????protected?void?onCreate(Bundle?savedInstanceState)?{?
  • ????????super。onCreate(savedInstanceState);?
  • ????????setContentView(R。layout。handlertest);?
  • ?
  • ????????button?=?(Button)?findViewById(R。id。button);?
  • ????????myHandler?=?new?MyHandler();?
  • ????????//?當(dāng)創(chuàng)建一個新的Handler實(shí)例時,?它會綁定到當(dāng)前線程和消息的隊(duì)列中,開始分發(fā)數(shù)據(jù)?
  • ????????//?Handler有兩個作用,?(1)?:?定時執(zhí)行Message和Runnalbe?對象?
  • ????????//?(2):?讓一個動作,在不同的線程中執(zhí)行。?
  • ?
  • ????????//?它安排消息,用以下方法?
  • ????????//?post(Runnable)?
  • ????????//?postAtTime(Runnable,long)?
  • ????????//?postDelayed(Runnable,long)?
  • ????????//?sendEmptyMessage(int)?
  • ????????//?sendMessage(Message);?
  • ????????//?sendMessageAtTime(Message,long)?
  • ????????//?sendMessageDelayed(Message,long)?
  • ??????
  • ????????//?以上方法以?post開頭的允許你處理Runnable對象?
  • ????????//sendMessage()允許你處理Message對象(Message里可以包含數(shù)據(jù),)?
  • ?
  • ????????MyThread?m?=?new?MyThread();?
  • ????????new?Thread(m)。start();?
  • ????}?
  • ?
  • ????/**?
  • ????*?接受消息,處理消息?,此Handler會與當(dāng)前主線程一塊運(yùn)行?
  • ????*?*/?
  • ?
  • ????class?MyHandler?extends?Handler?{?
  • ????????public?MyHandler()?{?
  • ????????}?
  • ?
  • ????????public?MyHandler(Looper?L)?{?
  • ????????????super(L);?
  • ????????}?
  • ?
  • ????????//?子類必須重寫此方法,接受數(shù)據(jù)?
  • ????????@Override?
  • ????????public?void?handleMessage(Message?msg)?{?
  • ????????????//?TODO?Auto-generated?method?stub?
  • ????????????Log。d("MyHandler",?"handleMessage。。。。。。");?
  • ????????????super。handleMessage(msg);?
  • ????????????//?此處可以更新UI?
  • ????????????Bundle?b?=?msg。getData();?
  • ????????????String?color?=?b。getString("color");?
  • ????????????MyHandlerActivity。this。button。append(color);?
  • ?
  • ????????}?
  • ????}?
  • ?
  • ????class?MyThread?implements?Runnable?{?
  • ????????public?void?run()?{?
  • ?
  • ????????????try?{?
  • ????????????????Thread。sleep(10000);?
  • ????????????}?catch?(InterruptedException?e)?{?
  • ????????????????//?TODO?Auto-generated?catch?block?
  • ????????????????e。printStackTrace();?
  • ????????????}?
  • ?
  • ????????????Log。d("thread。。。。。。。",?"mThread。。。。。。。。");?
  • ????????????Message?msg?=?new?Message();?
  • ????????????Bundle?b?=?new?Bundle();//?存放數(shù)據(jù)?
  • ????????????b。putString("color",?"我的");?
  • ????????????msg。setData(b);?
  • ?
  • ????????????MyHandlerActivity。this。myHandler。sendMessage(msg);?//?向Handler發(fā)送消息,更新UI?
  • ?
  • ????????}?
  • ????}?
  • }
  • 轉(zhuǎn)載于:https://www.cnblogs.com/TECHNOLOGYer/p/4780161.html

    總結(jié)

    以上是生活随笔為你收集整理的Android开发中Handler的经典总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美gv在线 | 少妇激情网 | 欧美影院一区二区三区 | 亚洲av综合色区无码一区爱av | 午夜精品电影 | 爱综合网 | www.jizzjizz| 国产日韩不卡 | 红桃视频国产 | 日韩精品极品 | 桃谷绘里香在线播放 | 成人免费在线视频网站 | www三级 | 91国内精品视频 | 欧美丰满bbw | 午夜影院性 | 欧美日韩亚洲一区二区三区 | 91高清在线免费观看 | av片在线观看网站 | 免费视频a| 免费男女乱淫真视频免费播放 | 欧美一区二区三区免费在线观看 | 日韩电影网址 | 按摩害羞主妇中文字幕 | 国产日产亚洲系列最新 | 少妇扒开粉嫩小泬视频 | 亚洲欧美中文日韩在线v日本 | 欧美偷拍综合 | 日本人妻一区二区三区 | 风流老熟女一区二区三区 | 国产人妻精品久久久久野外 | 亚洲熟妇一区二区 | 一区二区麻豆 | 日b在线观看 | 国模私拍大尺度裸体av | 五月天精品在线 | 久久久精品视频网站 | 欧美日韩午夜激情 | 四虎在线视频 | 日本精品中文字幕 | 玖玖免费 | 国产成人精品国内自产拍免费看 | 久久久久亚洲av无码麻豆 | 欧美日韩高清一区二区 | 蜜桃无码一区二区三区 | 国产高清免费在线播放 | 免费精品一区二区 | 国产大片91| 亚洲精品鲁一鲁一区二区三区 | 色一情一交一乱一区二区三区 | 久久无码性爱视频 | 一区二区不卡免费视频 | 超碰xxx| japanese中文字幕 | 91网址入口| 欧美久久一区二区三区 | 一区二区视频免费在线观看 | 40一50一60老女人毛片 | 九九热九九 | www.黄色网 | 国产白袜脚足j棉袜在线观看 | 牛牛av在线 | 三级全黄做爰在线观看 | 欧美黄色性| 色中文| 依人99| 欧美成人黑人xx视频免费观看 | 伊人精品在线观看 | 国产高清一二三区 | 在线免费视频 | 国产黄色特级片 | 草民午夜理伦三级 | 印度午夜性春猛xxx交 | a毛片在线免费观看 | 九九免费精品视频 | 天天天综合网 | 日本黄色一区二区三区 | 一级片国产 | 国产香蕉精品视频 | 久久婷婷五月综合色国产香蕉 | 中文字幕97| 一区二区中文字幕在线观看 | 欧美 日韩 国产 成人 在线 91 | 久草新免费 | 字幕网在线观看 | 青娱乐极品在线 | 中文字幕第23页 | 亚洲色成人网站www永久四虎 | 日韩伦理视频 | 亚洲国产成人av | 温柔女教师在线观看 | 国产一区二区三区免费播放 | 性少妇xxxxx| 四虎影视免费永久观看在线 | 中国 免费 av | 国产在线免费av | 欧美日韩中 | 久久久久久网 | 欧美a级肉欲大片xxx |