《第一行代碼》學習筆記35-服務Service(2)

1.Android的UI線程不安全,想要更新應用程序里的UI元素,則須在主線程中進行,否則會出現異常。

2.Android不允許在子線程里進行UI操作,對于該情況,Android提供了一套異步消息處理機制,完美解決在子線程中進行UI操作。

3.解析異步消息處理機制:
Android中的異步消息處理有四部分,Message, Handler, MessageQueue和Looper。
(1)Message:線程之間傳遞的消息,在內部攜帶少量的信息,用在不同線程間交換數據。
(2)Handler:處理者,用于發送和處理消息。發送消息使用Handler的sendMessage()方法,發出的消息經過一系列輾轉處理,
會傳遞到Handler的handleMessage()方法中。
(3)MessageQueue:消息隊列,用于存放所有通過Handler發送的消息。這部分消息會一直存在于消息隊列中,等待被處理。
每個線程中只有一個MessageQueue對象。
(4)Looper:每個線程中的MessageQueue的管家,調用Looper的loop()方法后,會進入到無限循環中,然后每當發現MessageQueue
中存在一條消息,會將它取出,傳遞到Handler的handleMessage()方法中。每個線程也只會有一個Looper對象。

4.異步消息處理的整個流程:Firstly,在主線程中創建一個Handler對象,并重寫handleMessage() 方法;Secondly,當子線程中需
要進行UI操作時,就創建個Message對象,并通過Handler將這條消息發送出去;Thirdly,消息被添加到MessageQueue隊列中等待被
處理,而Looper則會一直嘗試從MessageQueue中取出待處理消息,最后分發回Handler的handleMessage() 方法中。
Handler在主線程中創建,此時handleMessage()方法中的代碼也會在主線程中運行,于是安心進行UI操作。

5.整個異步消息處理機制的流程示意圖如下:
839964-20151215122526693-334085522.png
一條Message經過這樣一個流程的輾轉調用后,也就從子線程進入到主線程,從不能更新UI變成可以更新UI。

轉載于:https://www.cnblogs.com/Iamasoldier6/p/5047354.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256248.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256248.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256248.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#中HP-Socket通信組件詳解

概念 HP-Socket 是國產的TCP、UDP和HTTP 通信框架,包含服務端、客戶端和 Agent 組件,提供 C/C、C#、Java、Python 等多種編程語言接口。 與傳統TCP通訊區別的是HP-Socket 對通信層做到了完全封裝,程序不必關注通信層的任何細節;H…

mail發送的內容顯示為附件的解決辦法

利用命令: cat data.mail | mail -v -s "mail test" xxxqq.com 發送的內容在收件箱中顯示為附件tcmimi.xxx.bin. 這是因為mail期望文件輸入的是unix格式的文本,也就是說換行符使用\n而不是\r\n,如果文本中包含\r(使用set list,顯示為^M),這種情況下mail會認為該文件…

【圖像處理】——Python+opencv實現二值圖像的輪廓邊界跟蹤以及輪廓面積周長的求解(findcontours函數和contourArea函數)

目錄 一、函數 cv.findContours 二、輪廓層級(返回參數hierarchy) 三、輪廓尋找方式 1. RETR_LIST 2. RETR_TREE

基于C#的ico圖標制作與應用

一、簡介 ICO是什么 ICO 是 Windows 開發的一種圖標格式,是一種可以存儲多張圖案、多尺寸、多色板的圖標文件。 一般用IcoFX軟件來創建或修改ico文件。 點擊下載 Ico文件創建與應用 1.單擊打開按鈕,選擇一個圖像文件,確定后一般出現以下…

第5章--高級數據管理

5.1 數值和字符處理函數 常用的數學函數 統計函數 例子&#xff1a; > x <- c(1,2,3,4,5,6,7,8) > mean(x) [1] 4.5 > sd(x) [1] 2.44949 默認情況下&#xff0c;函數scale()對矩陣或數據框的指定列進行均值為0、標準差為1的標準化&#xff1a; newdata <- scal…

在思科無線控制器上查看5GHz和2.4GHz的客戶端數量

在圖形界面下找了好長時間也沒有看到在哪里&#xff0c;在CLI界面下找到了相應的命令&#xff0c;命令如下&#xff1a; (Cisco Controller) >show client ap 802.11a allMAC Address AP Id Status WLAN Id Authenticated ----------------- ------ -…

【圖像處理】——實現二值圖像的輪廓邊界跟蹤以及輪廓面積周長的求解(connectedComponentsWithStats()函數和connectedComponents()函數)

目錄 一、cv2.connectedComponents() 函數原型: 輸入參數解析: 返回參數解析: 二、cv2.connectedC

Halcon閾值分割方法簡析

1. 基于直方圖的自動閾值分割 1.1 關鍵算子 auto_threshold(Image : Regions : Sigma : )&#xff1a;使用多閾值分割單通道圖像。 首先&#xff0c;計算圖像的灰度直方圖。 然后&#xff0c;使用標準差為Sigma的一維高斯濾波器對直方圖進行濾波。 進而&#xff0c;從直方圖中…

GSM BTS Hacking: 利用BladeRF和開源BTS 5搭建基站

GSM BTS Hacking: 利用BladeRF和開源BTS 5搭建基站 引文 如果你已經購買了Nuand&#xff08;官方&#xff09;BladeRF x40&#xff0c;那么就可以在上面運行OpenBTS并可以輸入一些指令來完成一些任務。一般來說HackRF&#xff0c;是一款覆蓋頻率最寬的SDR板卡。它幾乎所有的信息…

夜深人靜,想規劃一下短期

截止寫到這里的時候&#xff0c;已經是農歷的十一月初六了&#xff0c;算算時間&#xff0c;距離過年也不太遙遠了。就只有短短50多天左右。 很多事想做沒有時間&#xff0c;很多程序要改&#xff0c;沒有時間&#xff1b;很多想法想付諸行動&#xff0c;總是半途而廢。時間久這…

【圖像處理】——Python+opencv實現提取圖像的幾何特征(面積、周長、細長度、區間占空比、重心、不變矩等)

轉載請注明詳細地址本文簡單介紹了圖像常見幾何特征的概念以及求解方法本文介紹了Python和opencv求解幾何特征的常用方法目錄 其他形狀外接輪廓的方法可以參考:《OpenCV-Python——第17.3章:輪廓形狀擬合(邊界矩形,最小外接圓...)及性質》 一、獲得輪廓 二、面積 1、c…

Linux 中斷處理淺析

最近在研究異步消息處理, 突然想起linux內核的中斷處理, 里面由始至終都貫穿著”重要的事馬上做, 不重要的事推后做”的異步處理思想. 于是整理一下~第一階段&#xff0d;&#xff0d;獲取中斷號每個CPU都有響應中斷的能力, 每個CPU響應中斷時都走相同的流程. 這個流程就是內核…

C#中泛型的相關知識點總結

一、概念 1.1 泛型 泛型是什么&#xff1f; 書本告訴我們泛型是通過通過參數化類型的方法在同一份代碼上對多種數據類型進行調用。也即是說&#xff0c;如果同一個代碼需要使用不同的數據類型的話就可以定義一個泛型的類或者方法。 泛型的優點是什么&#xff1f; 1.通過使用…

用scikit-learn研究局部線性嵌入(LLE)

1. scikit-learn流形學習庫概述 在scikit-learn中&#xff0c;流形學習庫在sklearn.manifold包中。里面實現的流形學習算法有&#xff1a; 1&#xff09;多維尺度變換MDS算法&#xff1a;這個對應的類是MDS。MDS算法希望在降維時在高維里樣本之間的歐式距離關系在低維可以得到保…

判斷字符串中是否為數字的三種方法

//1用JAVA自帶的函數 public static boolean isNumeric(String str){for (int i str.length();--i>0;){ if (!Character.isDigit(str.charAt(i))){return false;}}return true;}//2用正則表達式 public static boolean isNumeric(String str){ Pattern pattern Pattern.…

【圖像處理】——Python+opencv實現圖像的hu不變矩特征提取(含原理、推導過程、應用、代碼等)

目錄 轉載本文請注明詳細地址本文介紹了矩和圖像矩的含義本文介紹了不變矩的計算、應用本文介紹了如何計算圖像相似度一、思維導圖 二、普通矩的定義 1、零階矩 2、二階矩

MSSQL-to-MySQL v5.3, 從MSSQL遷移到mySQL的最佳工具

將現有的MSSQL數據庫遷移到MySQL數據庫,嘗試了很多種工具 MySQL Workbench / MSSQL to MySQL Export / DB Converter / openDBcopy 都有這樣那樣的問題。 最后發現就MSSQL-to-MySQL好一點&#xff0c;能夠保證所有表和數據成功遷移&#xff0c;并且字段類型都比較正確。 只是對…

C#窗體應用程序崩潰解決方法總結

一、內存不足 內存是最常見的導致程序崩毀的原因&#xff0c;常用解決方式有如下幾種。 算法中聲明的占內存較大的全局變量或類中聲明的私有變量在循環或運行結束后需進行釋放&#xff0c;手動設置Dispose()&#xff0c;然后GC.Collect()。對一些重復調用的類避免多次實例化。…

【學習的心得】——“快餐”的效率與“挖掘”的重要性

從事Python圖像處理和機器學習方向已經有大半年了&#xff0c;現在作為還是一個研究生的我&#xff0c;大部分時間都是在完成老師給的課題任務&#xff0c;但是這幾個月下來我感覺和老師的意見有點分歧了甚至跟一些同學都有所意見分歧了。 Python雖然是最近幾年火起來的語言&a…

Unity3D Input按鍵系統

默認輸入軸&#xff1a; Horizontal 和 Vertical被映射到w, a, s, d鍵和方向鍵 Fire1, Fire2, Fire3被分別映射到Ctrl&#xff0c;Option&#xff08;Alt&#xff09;和Command鍵 Mouse X 和 Mouse Y被映射到鼠標移動增量 Window Shake X 和 Window Shake Y 被映射到窗口的移動…