android 安卓子執行緒和主線程互動

2021-08-19 02:52:40 字數 1188 閱讀 6324

0基礎安卓,為了記錄。

1.安卓為什麼要執行子執行緒,什麼情況下用子執行緒?

答:將消耗時間的任務放到子執行緒中執行,保證主線程ui的流暢性。

2.具體實現

當需要請求網路資料的時候,會把請求過程放在子執行緒裡,主線程呼叫的時候直接是checkbag(引數)。

比如我需要類似於web的ajax驗證

public void checkbag(final string bagcode) catch (exception e)  finally  catch (ioexception e) 

}if (connection != null) }};

};thread.start();

}

用message或者buddle進行和主線程通訊,

主線程有乙個handler,handler包含執行緒佇列和訊息佇列,實現非同步訊息處理機制。

主要作用有:1.執行在某個執行緒上,共享執行緒的訊息佇列。2.接收訊息、排程訊息、派發訊息和處理訊息。3.實現訊息的非同步處理。

簡單理解為:乙個連線主線程和子執行緒的工具。

上面的**中有

myhandler.sendmessage(msg);

msg.what = 0;

這是講請求返回的資料傳送到主線程,並新增乙個標識 what,

這個what很重要,用來區分哪個執行緒傳送的資料。子執行緒傳送資料後需要主線程來接受,在哪接受呢?就是handler,hander的**:

private static class myhandler extends handler 

@override

public void handlemessage(message msg)

mactivity.get().updateuithread(msg);

}}

updateuithread(msg);
handler是乙個中轉的過程,需要將msg傳到更新主線程的方法中,上面updateuithread(msg)就是起這麼個作用。

updateuithread**是:

private void updateuithread(message msg)

}

所以就實現了執行緒和主線程直接的通訊

主線程和子執行緒

子執行緒通過 handlerthread的thread.getlooper 繫結,在主線程的handler的handlermessage中呼叫threadhandler.sendmessagedelay msg,1000 向子執行緒傳送訊息。在子執行緒中通過handler.sendmessagede...

主線程和子執行緒

主線程負責管理由它建立的子執行緒,建立 啟動 掛起 停止等。主線程通過發訊息的方式管理子執行緒,例如,給子執行緒傳送start 訊息,子執行緒啟動,子執行緒執行入口的run 方法。thread有下面兩個構造方法 thread runnable target,string name thread ru...

主線程和子執行緒總結

執行結果 從上面可以看到 如果主線程和子執行緒是並行的,雖然都是用while 1 但是倚靠 cpu的排程,主線程和子執行緒都有機會得到執行。如果要在子執行緒裡面改變主線程裡面的資料,就在 pthread create 裡面的最後 乙個引數使用傳位址呼叫 void c,否則使用傳值呼叫 void c ...