android線程刷新 android線程機制

[轉(zhuǎn)載]android如何自定義進(jìn)行線程的更新,使用handle

1、一個Looper 只有處理完一條Message才會讀取下一條,所以消息的處理是阻塞形式的(handleMessage()方法里不應(yīng)該有耗時操作,可以將耗時操作放在其他線程執(zhí)行,操作完后發(fā)送Message(通過sendMessges方法),然后由handleMessage()更新UI)。

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供云溪網(wǎng)站建設(shè)、云溪做網(wǎng)站、云溪網(wǎng)站設(shè)計、云溪網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、云溪企業(yè)網(wǎng)站模板建站服務(wù),十載云溪做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

2、使用sendMessage()將消息對象加入到消息隊列后,當(dāng)Looper輪詢到該消息時,就會調(diào)用Handler的handleMessage()來對其進(jìn)行處理。

3、經(jīng)過我的測試上面這段方法是無法更新UI的,因為handler是在子線程實例化的,并非在UI線程,也證實了我們的想法。

Android里子線程真的不能刷新UI嗎?

1、子線程的hanlder里面是不能更新Android UI的。

2、在子線程中是不能進(jìn)行UI 更新的,而可以更新的結(jié)果只是一個幻像:因為子線程代碼執(zhí)行完畢了,又自動進(jìn)入到了主線程,執(zhí)行了子線程中的UI更新的函數(shù)棧,這中間的時間非常的短,就讓大家誤以為分線程可以更新UI。

3、那到底非主線程以外的線程能否刷新UI呢?呵呵,答案當(dāng)然是能,前提條件是它要擁有自己的ViewRoot。如果你要直接創(chuàng)建ViewRoot的實例的話,你會失望的發(fā)現(xiàn)不能找到這個類。

Android子線程在沒有ViewRoot的情況下能刷新UI嗎?

如果你在網(wǎng)上搜索CalledFromWrongThreadException:Only the original thread that created a view hierarchy can touch its views. 那么你肯定能看到很多文章說Android里子線程不能刷新UI。這句話不能說錯,只是有些不太嚴(yán)謹(jǐn)。

我們常常聽到這么一句話:更新UI要在UI線程(或者說主線程)中去更新,不要在子線程中更新UI,而Androidguan 方也建議我們不要在非UI線程直接更新UI。

安卓中最常見的操作是子線程操作完事后得到數(shù)據(jù)想更新UI,安卓有規(guī)定不允許在子線程中刷新UI,所以Handler出現(xiàn)了。使用和理解大致步驟。

例如,在子線程的狀態(tài)發(fā)生變化時,我們需要更新UI。

當(dāng)前標(biāo)題:android線程刷新 android線程機制
鏈接分享:http://muchs.cn/article24/digogje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站營銷云服務(wù)器、網(wǎng)站設(shè)計公司品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)