android中什麼時候會選擇用廣播來進行執行緒間的通訊

時間 2022-04-08 11:38:03

1樓:城南明月羿當年

android中什麼時候會選擇用廣播來進行執行緒間的通訊 android 多執行緒 通訊

執行緒中通訊就不要用廣播了吧 程序中通訊可以用廣播或者aidl

可是,這兩天看到的專案都是這麼做的;然後,自己分析了下,覺得一下的理由也是可以成立的;

1.正常情況下我們選擇handler訊息機制來進行單向的執行緒間的通訊;(工作執行緒向主線程傳送訊息)

因為主線程有現成的handler,而工作執行緒沒有現成的handler,這樣的話,主線程將handler交給工作執行緒而讓工作執行緒將工作的結果交給主線程;

相反,工作執行緒中沒有現成的handler(事實上是沒有訊息佇列,也就是handler沒有繫結到工作執行緒),那麼,如果開闢的話,**角度上是挺麻煩的(相對應廣播機制來說);

2.廣播機制本身就是雙向的(工作執行緒向主線程傳送廣播,主線程向工作執行緒傳送廣播);

//另外,對於像乙個activity中通過fragment來進行介面的處理; 我們大多數情況下是採用廣播的機制來實現fragment中adapter的資料的更新;這樣做主要是考慮到工作執行緒的任務載入完成,而具體的對應重新整理的activity可能還沒有啟動;

另外,基於介面隔離原則,如果用handler進行通訊的話,則不能很好的滿足這一原則;

你要是週期比較長 用廣播好些吧

應該與週期關係不是很密切。最主要的原因是兩條線成是雙向通訊。

handler類似於p2p的通訊。

廣播則類似於乙個server端,用來處理分發不同執行緒的請求,從控制器的角度來說用廣播更好一點。

一般使用handler的,多用於子執行緒處理事務,完成時告知主線程這一類的情況。

而類似樓主所說的多條執行緒之間需要頻繁互動的話,廣播是個很好的選擇,並且結構清晰,只是不知道廣播的效能與handler相比會怎麼樣。

2樓:匿名使用者

這個名字都給你取的這麼好聽了。廣播:需要向外接廣泛傳播的資料。適用於1對多方案。***宣布人民集體戴口罩。就是用的廣播!懂了麼兄弟

android 什麼時候用到廣播

3樓:速度輕機槍

1.正常情況下我們選擇handler訊息機制來進行單向的執行緒間的通訊;(工作執行緒向主線程傳送訊息)

因為主線程有現成的handler,而工作執行緒沒有現成的handler,這樣的話,主線程將handler交給工作執行緒而讓工作執行緒將工作的結果交給主線程;

相反,工作執行緒中沒有現成的handler(事實上是沒有訊息佇列,也就是handler沒有繫結到工作執行緒),那麼,如果開闢的話,**角度上是挺麻煩的(相對應廣播機制來說);

2.廣播機制本身就是雙向的(工作執行緒向主線程傳送廣播,主線程向工作執行緒傳送廣播);

另外,對於像乙個activity中通過fragment來進行介面的處理; 我們大多數情況下是採用廣播的機制來實現fragment中adapter的資料的更新;這樣做主要是考慮到工作執行緒的任務載入完成,而具體的對應重新整理的activity可能還沒有啟動;

另外,基於介面隔離原則,如果用handler進行通訊的話,則不能很好的滿足這一原則

面試被問到android中兩個子執行緒怎麼通訊,我懵了。

4樓:星呈幻

構造handlerthread類的物件mhandlerthread,這樣生成乙個子執行緒可以呼叫new myhandler(mhandlerthread.getlooper())來獲取子執行緒的handler,另乙個子執行緒發訊息,收到訊息的就是子執行緒而不是主線程了。

5樓:匿名使用者

他是想考你 android handler機制。 這個是android系統特有的。

6樓:匿名使用者

一般情況,子執行緒間通訊是 利用其主線程中的handler 或者廣播 來處理通訊問題。

簡單的是 測試 當 乙個子執行緒載入結束的時候停止另乙個子執行緒的執行即可。

android子執行緒和子執行緒之間的通訊是怎樣的

7樓:畫魂大師

如果你thread a獲取資料是給另外乙個thread b使用的,那為什麼不以thread b為主,甚至直接讓thread b來請求資料資料呢。疑問:thread a 請求資料,thread b在那專門等待?

為什麼要這麼設計?如果你非要這麼幹,那也是thread a把資料處理好了

android中線程與執行緒,程序與程序之間如何通訊?

8樓:有車

使用handler傳送message,訊息佇列排隊

程序是乙個具有獨立功能的程式關於某個資料集合的一次執行活動。它可以申請和擁有系統資源,是乙個動態的概念,是乙個活動的實體。它不只是程式的**,還包括當前的活動,通過程式計數器的值和處理暫存器的內容來表示。

程序是乙個「執行中的程式」。程式是乙個沒有生命的實體,只有處理器賦予程式生命時,它才能成為乙個活動的實體,我們稱其為程序。

通常在乙個程序中可以包含若干個執行緒,它們可以利用程序所擁有的資源。在引入執行緒的作業系統中,通常都是把程序作為分配資源的基本單位,而把執行緒作為獨立執行和獨立排程的基本單位。由於執行緒比程序更小,基本上不擁有系統資源,故對它的排程所付出的開銷就會小得多,能更高效的提高系統內多個程式間併發執行的程度。

執行緒和程序的區別在於,子程序和父程序有不同的**和資料空間,而多個執行緒則共享資料空間,每個執行緒有自己的執行堆疊和程式計數器為其執行上下文。多執行緒主要是為了節約cpu時間,發揮利用,根據具體情況而定。執行緒的執行中需要使用計算機的記憶體資源和cpu。

9樓:如此平庸

執行緒之間有訊息迴圈的話,一般採用message handler機制; 程序間一般採用aidl方式進行通訊。

你在什麼時候會選擇人去旅遊,你在什麼時候會選擇乙個人去旅遊?

任何時候都可以,除了個別時候會因為心情不好,想乙個人靜靜,就會選擇乙個人去旅遊,其實有時候乙個人更多的是自由和安逸,還有就是我非常自責和內疚的時候,沒有方向,我就會選擇自己去旅遊,那是我散心的最好的方式,而且我也會學會很多,旅遊完之後,我幾乎就不會那麼傷心難過了。我會選擇在春天或者是秋天的時候去旅行...

讀MBA選擇什麼時候最好,什麼時候開始備考MBA比較合適?

1.考mba到底難不難?就每年不斷增長的報考人數來說,考mba肯定不簡單。但究竟難不難,有多難,還是要看你自身的基礎以及後期的複習情況。如果你能提早準備,並嚴格按照複習計畫去認真準備,難度就會降低很多。2.mba考生最缺的是什麼?先看一下計畫報考mba的人群 mba的報考條件是要求碩士畢業有2年或2...

sql中游標在什麼時候用,SQL中什麼時候需要使用游標?使用游標的步驟

resultset中不是有游標嗎?位於第乙個元素之前,通過移動游標來檢視找到的結果 while rs.hasnext 主要是用查詢出來的資料集做迴圈的時候用到!sql中什麼時候需要使用游標?使用游標的步驟 sql中游標是指什麼?怎麼用的?又什麼作用?sql語言是面向集合的,是運用關係進行運算,最擅長...

oracle什麼時候選擇hash join演算法

舉乙個簡單的例子來說明sql server 中hash join的演算法。例如有兩張表,每張表都有10000行的記錄,假設做join的兩個欄位都是從1到10000的序數。如果要做hashjoin,那麼首先對其中的乙個表上的列進行hash運算,將生成相同值的列放在乙個桶裡。為了簡單起見,假定這裡的ha...

對於愛情什麼時候選擇放手

在對方找到比自己更幸福的時候是該放手.現在的人對於愛情都沒有太大的信心.更可恥的是,他們利用愛情達到自己的目的 在這種時候是必然要放手的.在有就是當你愛乙個人的時候,而那個人卻愛著另乙個人又要對你負責任的時候,為了你愛的人,你也要選擇放手.要不就是當你和乙個相愛,突然知道自己得了很花錢的病而且自己的...