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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

android异步线程利用Handler将消息发送至UI线程

發(fā)布時(shí)間:2024/9/30 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android异步线程利用Handler将消息发送至UI线程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

android UI線程安全

首先對(duì)于android而言,UI線程就是我們的主線程,在Android應(yīng)用啟動(dòng)時(shí),會(huì)自動(dòng)創(chuàng)建一個(gè)線程,主線程負(fù)責(zé)UI的展示、UI事件消息的派發(fā)處理等等,因此主線程也叫做UI線程。

  • 線程安全的定義

線程安全是多線程編程時(shí)的計(jì)算機(jī)程序代碼中的一個(gè)概念。在擁有共享數(shù)據(jù)的多條線程并行執(zhí)行的程序中,線程安全的代碼會(huì)通過同步機(jī)制保證各個(gè)線程都可以正常且正確的執(zhí)行,不會(huì)出現(xiàn)數(shù)據(jù)污染等意外情況。

如果你的代碼所在的進(jìn)程中有多個(gè)線程在同時(shí)運(yùn)行,而這些線程可能會(huì)同時(shí)運(yùn)行這段代碼。如果每次運(yùn)行結(jié)果和單線程運(yùn)行的結(jié)果是一樣的,而且其他的變量的值也和預(yù)期的是一樣的,就是線程安全的,或者說:一個(gè)類或者程序所提供的接口對(duì)于線程來說是原子操作或者多個(gè)線程之間的切換不會(huì)導(dǎo)致該接口的執(zhí)行結(jié)果存在二義性,也就是說我們不用考慮同步的問題 。

  • 為什么說Android UI不是線程安全的?

UI線程才能與Android UI工具包中的組件進(jìn)行交互,在開發(fā)Android應(yīng)用時(shí)必須遵守單線程模型的原則:

android UI 中提供invalidate()來更新界面,而invalidate()方法是線程不安全。

Android提供了Invalidate方法實(shí)現(xiàn)界面刷新,但是Invalidate不能直接在非UI主線程中調(diào)用,因?yàn)樗沁`背了單線程模型:Android UI操作并不是線程安全的,并且這些操作必須在UI線程中調(diào)用。例如:在非UI線程中調(diào)用invalidate會(huì)導(dǎo)致線程不安全,也就是說可能在非UI線程中刷新界面的時(shí)候,UI線程(或者其他非UI線程)也在刷新界面,這樣就導(dǎo)致多個(gè)界面刷新的操作不能同步,導(dǎo)致線程不安全。

Handler類

Handler主要用于異步消息的處理:當(dāng)發(fā)出一個(gè)消息之后,首先進(jìn)入一個(gè)消息隊(duì)列,發(fā)送消息的函數(shù)即刻返回,而另外一個(gè)部分在消息隊(duì)列中逐一將消息取出,然后對(duì)消息進(jìn)行處理,也就是發(fā)送消息和接收消息不是同步的處理。 這種機(jī)制通常用來處理相對(duì)耗時(shí)比較長(zhǎng)的操作。

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

在Android中,對(duì)于UI的操作通常需要放在主線程中進(jìn)行操作。如果在子線程中有關(guān)于UI的操作,那么就需要把數(shù)據(jù)消息作為一個(gè)Message對(duì)象發(fā)送到消息隊(duì)列中,然后,由Handler中的handlerMessage方法處理傳過來的數(shù)據(jù)信息,并操作UI。當(dāng)然,Handler對(duì)象是在主線程中初始化的,因?yàn)樗枰壎ㄔ谥骶€程的消息隊(duì)列中。

類sendMessage(Message msg)方法實(shí)現(xiàn)發(fā)送消息的操作。 在初始化Handler對(duì)象時(shí)重寫的handleMessage方法來接收Message并進(jìn)行相關(guān)操作。

  • Message

Message是Handler接收與處理的消息對(duì)象

其中msg.what主要用于區(qū)分handler接受到的message實(shí)例。根據(jù)此區(qū)分,Handler可以對(duì)消息進(jìn)行不同的處理操作。

msg.setData(),可以將數(shù)據(jù)存入msg。

利用handler.sendMessage(msg);將消息發(fā)送給Handler

通過Handler類將子線程中更新UI的消息發(fā)送至UI線程更新UI

  • 子線程中
Message msg=Message.obtain(); msg.what=1; Bundle bundle =new Bundle(); bundle.putString("linkman", userAddressInfo.getLinkman()); bundle.putString("telephone", userAddressInfo.getTelephone()); msg.setData(bundle); handler.sendMessage(msg);

因?yàn)樵贏ndroid段進(jìn)行異步網(wǎng)絡(luò)請(qǐng)求獲取數(shù)據(jù)的時(shí)候,成功獲取得到數(shù)據(jù)是在子線程中的,因?yàn)閁I更新是需要在UI線程(主線程)中進(jìn)行的。所以需要發(fā)送一個(gè)Message給Handler,在主線程中接收消息并處理。

  • 主線程中
private Handler handler= new Handler(){public void handleMessage(Message msg){Bundle bundle=msg.getData();if(msg.what==1){linkman_issue_order_tv.setText(bundle.getString("linkman"));telephone_issue_order_tv.setText(bundle.getString("telephone"));}else if (msg.what==2){issue_order_touxiang_iv.setImageURL(bundle.getString("userImg"));issue_order_user_nick_name_tv.setText(bundle.getString("userNickname"));}} };

主線程接收并處理子線程中發(fā)送的Message

參考資料

  • 定義部分摘自:https://www.jianshu.com/p/8e65b2d66162

總結(jié)

以上是生活随笔為你收集整理的android异步线程利用Handler将消息发送至UI线程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 啪啪天堂| 好色先生视频污 | 亚洲美女高潮久久久 | 日韩精品一区二区三区在线观看 | 欧美在线观看a | 日韩免费a | 精品久久久久久久久久久久久久久久久久 | 丝袜+亚洲+另类+欧美+变态 | av无码精品一区二区三区 | 欧美性猛交xx乱大交 | av先锋资源网| 91免费视频网| 日韩欧美国产另类 | 欧美日韩在线观看视频 | 精品国产一区二区三区日日嗨 | 少妇媚药按摩中文字幕 | 国产日比视频 | 久操视频在线免费观看 | 欧美熟妇另类久久久久久多毛 | 天天搞天天干 | 国产探花在线观看 | 人人澡人人看 | av免费天堂| 中文字幕在线视频免费观看 | 天使色吧 | 中国国语农村大片 | 蜜臀av免费在线观看 | 日韩黄色小视频 | 99热99re6国产在线播放 | 精品人妻一区二区三区日产 | 国产不卡一 | 日韩一区二区视频在线观看 | 污污视频在线免费看 | 国产伦精品一区二区三区免费视频 | 一级性生活大片 | www国产亚洲精品久久网站 | 推特裸体gay猛交gay | 先锋影音男人 | 在线视频这里只有精品 | 美女写真福利视频 | 亚洲免费网站 | 成人av免费在线播放 | 国产精品97| 色综合天天射 | 久久亚洲婷婷 | 亚洲视频在线免费观看 | 欧美一区二区三区成人片在线 | 人妻少妇无码精品视频区 | 黄91在线观看 | 成年人在线免费观看 | 国产尤物在线视频 | 北条麻妃一区二区三区在线观看 | 91亚洲视频在线 | 奶波霸巨乳一二三区乳 | 野花视频在线观看免费 | 视频区小说区图片区 | 精品999久久久一级毛片 | 国产av毛片 | 日本福利视频一区 | 国产一区二区三区在线播放无 | 美女被出白浆 | 亚洲网站av| 亚洲日本精品一区 | 91久久亚洲 | 国产精品一区二区久久毛片 | 尹人在线视频 | 欧美成人a视频 | 成年人福利网站 | 欧美日韩精品一区二区三区 | 日日夜夜综合网 | 日韩精品久久久 | 解开人妻的裙子猛烈进入 | 国产亚洲激情 | 亚洲精品xxxxx | 伊人一区| 国产成人一区在线观看 | 另类一区 | 男女做激情爱呻吟口述全过程 | 花房姑娘免费全集 | 美腿丝袜一区二区三区 | 色婷婷av一区二区三区四区 | 亚洲成年人av | 欧美日韩一区二区三区在线视频 | 精品人妻av一区二区三区 | 欧美激情成人在线 | 亚洲综合首页 | av在线网站观看 | 熟女少妇一区二区三区 | 少妇脚交调教玩男人的视频 | 中文字幕一区二区三区四区视频 | 久久美女免费视频 | 免费黄色的网站 | 黄色片网站在线 | 美女黄站 | 色偷偷综合 | 天天操天天做 | 亚洲精选国产 | www性| 中文字幕天堂 |