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