如何在android一條單獨執行緒,更新ui

時間 2021-09-04 16:32:49

1樓:網路營銷專家

方法有兩種:

通過繼承thread類,重寫run方法來實現通過繼承介面runnable實現多執行緒

主要接受子執行緒傳送的資料, 並用此資料配合主執行緒更新ui.

handler的主要作用:主要用於非同步訊息的處理handler的執行過程:

當(子執行緒)發出一個訊息之後,首先進入一個(主執行緒的)訊息佇列,傳送訊息的函式即刻返回,而在主執行緒中的handler逐個的在訊息佇列中將訊息取出,然後對訊息進行處理。這樣就實現了跨執行緒的ui更新(實際上還是在主執行緒中完成的)。

這種機制通常用來處理相對耗時比較長的操作,如訪問網路比較耗時的操作,讀取文大檔案,比較耗時的操作處理等。

在大白話一點的介紹它的執行過程:

啟動應用時android開啟一個主執行緒

(也就是ui執行緒) , 如果此時需要一個耗時的操作,例如:

聯網讀取資料,或者讀取本地較大的一個檔案的時候,你不能把這些操作放在主執行緒中,如果你放在主執行緒中的話,介面會出現假死現象(這也就是你在主執行緒中直接訪問網路時會提示你異常的原因,如我們上篇文章所述android主執行緒不能訪問網路異常解決辦法)。

2樓:匿名使用者

android中非ui執行緒是不能對ui進行操作的,你可以在單獨執行緒執行耗時操作,然後通過handler去更新ui。或者你可以使用asynctask。

3樓:楊丫丫不知道

看些這個部落格上的內容,我想你就會很清楚了!

4樓:匿名使用者

用asynctask非同步類吧,我給你貼個demo

class asyncloader extends asynctask

@override

//這步被用於執行較長時間的後臺計算。非同步任務的引數也被傳到這步。計算的結果必須在這步//返回,將傳回到上一步。

在執行過程中可以呼叫publishprogress(progress...)來更新任務的進//度。在執行完onpreexecute() 方法後執行

protected integer doinbackground(integer... params)

@override

//非同步類的靜態方法在ui執行緒上呼叫任務後立即執行。這步通常被用於設定任務,例如在使用者界//面顯示一個進度條。

protected void onpreexecute()

@override

//當後臺計算結束時,呼叫 ui執行緒。後臺計算結果作為一個引數傳遞到這步,也就是//doinbackground(integer... params)的結果

protected void onpostexecute(integer result)

@override

//後臺呼叫ui執行緒,執行時間不確定

protected void onprogressupdate(integer... values)

@override

protected void oncancelled()}

android中真的不能在子執行緒中更新ui嗎

5樓:育知同創教育

在子執行緒中重新整理ui方法

:用handler

1、主執行緒中定義handler:

handler mhandler = new handler() }};

android子線**的不能更新ui麼

6樓:藍鳥移動開發者

這個是不可以的,這是為了保證ui執行緒的穩定,快速。但是有些元件確實可以在子執行緒中操作,比如progressbar,可以在子執行緒中更新進度條

如何在中頁尾加一條線,如何在word中頁尾加一條線

檢視 頁首和頁尾 在頁尾那兒直接打一條線就行了 或是點下劃線之後點一行空格就好了 或是copy一條你想要的線 關閉就可以了哈 word怎麼在頁尾新增橫線啊,急!求救! 竹非竹 請參照以下步驟在word中給頁尾新增橫線。1 首先在電腦上開啟目標word文件,然後進入到文件編輯介面。2 然後在文件頁面的...

CAD裡面怎麼畫等距線,CAD中如何在一條直線上等距排列另一圖形

詩付友終煙 很簡單啊 先劃一條基礎線,然後利用偏移命令即可完成啊。在偏移命令中,輸入要求的距離即可。 森成鞠雨 方法如下 1.命令條目 measure 2.選擇要定距等分的物件 3.指定線段長度或 塊 b 指定距離或輸入b4.把要排列的相交直線或圖元定義成塊即可。注意 選擇塊的基點。 斯嘉穎理韻 方...

Excel如何在單元格中用一條對角線將單元各一分為二,並且可以在兩部分中新增內容

在格式 單元格 邊框中,設定對角線。單元格錄入內容,按住alt打回車使文字換行,用空格和對齊方式調整文字的水平位置。對角線可以在 設定單元格格式 的邊框裡面實現,文字其實還是在一個單元格里面輸入的,可以用空格來分開,設定斜線邊框的介面 設定好之後的效果 單線操作 1.單元格右鍵,彈出選單選 設定單元...