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,可以在子執行緒中更新進度條
如何在HTML中畫一條線
北漂碼農 在html中花一條線的方法是有很多的,一般可以直接使用html 實現或者藉助css 來實現都是可以的。方法1 使用標籤畫線 hr 標籤定義水平線 這是段落。這是段落。這是段落。結果如下 方法2 使用css的border進行畫線 結果如下 方法 1 html 超文字標記語言的結構包括 頭 部...
如何在中頁尾加一條線,如何在word中頁尾加一條線
檢視 頁首和頁尾 在頁尾那兒直接打一條線就行了 或是點下劃線之後點一行空格就好了 或是copy一條你想要的線 關閉就可以了哈 word怎麼在頁尾新增橫線啊,急!求救! 竹非竹 請參照以下步驟在word中給頁尾新增橫線。1 首先在電腦上開啟目標word文件,然後進入到文件編輯介面。2 然後在文件頁面的...
CAD中如何在兩條不平行線之間畫一條已知長度的線
海邊的風 如題所述的題圖中的 已知長度的直線 的繪製方法如下 用 直線 命令,自點g至點g 繪製長35的豎直輔助直線,如圖所示。用 複製 命令,選取直線gh,指定點g為基點,指定點g 為目標點,繪製直線g i,與直線ai相交於點i,如圖所示。用 直線 命令,自點i向上繪製豎直直線ih,與直線gh相交...