發(fā)布時間:2024-01-18 10:08:32 瀏覽量:181次
Android在啟動應(yīng)用程序的時候,會為應(yīng)用創(chuàng)建一個Main線程,這個線程負責將事件分派給相應(yīng)用戶接口的widget,其中包括drawing事件。除了事件分派之外,Main線程還負責應(yīng)用與Android UI組件(例如, android.widget 和android.view 包)進行交互,因此Main 線程有時候也被稱為UI線程。
Application Not Response簡稱ANR,程序無響應(yīng)。
Android不會為每個組件實例創(chuàng)建單獨的線程。運行于同一進程的所有組件均在 UI 線程(Main)中實例化,并且對每個組件的系統(tǒng)調(diào)用均由該線程進行分派。這樣一來,響應(yīng)系統(tǒng)回調(diào)的方法(例如生命周期回調(diào)方法)始終在進程的UI線程中運行。
如果應(yīng)用在響應(yīng)用戶的操作的時候,在UI線程中執(zhí)行了大量的耗時操作,比方說網(wǎng)絡(luò)訪問或數(shù)據(jù)庫查詢。這樣做的后果勢必會阻塞整個UI。一旦UI線程被阻塞,將無法分派任何事件,包括繪圖事件。
如果UI線程被阻塞超過一定時間(目前 5 秒鐘),就會出現(xiàn)我們常說的ANR。
既然ANR是由于在UI線程中執(zhí)行大量耗時的操作引起的,那么我們在主線程中新建一個worker線程問題不就解決了么?事實上,這種方式的確能夠解決一些問題,但是對于UI來說就不是那么靈光了,因為Android UI 線程并不是線程安全的。
當程序中存在多個線程,如果多個線程都要訪問相同的公共的數(shù)據(jù)或者資源,就會產(chǎn)生線程安全為題。如果不解決線程安全問題,公共數(shù)據(jù)或者資源就會變得紊亂,影響正常的業(yè)務(wù)邏輯開發(fā)。
要解決多線程訪問共享資源的安全問題,可以通過加鎖機制進行解決。常見的加鎖機制有:互斥鎖,讀寫鎖等方式。加鎖后解決了線程安全問題,但是因為涉及到上鎖,釋放鎖的操作,消耗資源,因此加鎖會降低程序的運行效率。
綜上,當遇到多線程執(zhí)行時:不加鎖,會存在線程安全問題;加了所,解決線程安全問題,影響效率。
因為線程安全性能較差,線程不安全性能較好,Android中為了提高UI的繪制效率,保證渲染效果,選擇了線程不安全。因為線程不安全帶來的問題就是“不安全”,所以Android設(shè)計主線程為單線程模型,只能在UI線程中操作UI界面。
在Android開發(fā)過程中需要注意兩點:
如果子線程需要來修改用戶界面,就必須先通知主線程,主線程來幫助完成 。
針對不能再線程中更新UI的問題,Android提供了三種在線程中更新UI的方式來解決這一問題:
轉(zhuǎn)自:知乎Davie
熱門資訊
1. iPhone6的UI設(shè)計尺寸規(guī)范,原來如此重要!
想要了解iPhone6界面設(shè)計的尺寸規(guī)范嗎?這里為您詳細介紹iPhone6的UI設(shè)計尺寸規(guī)范,包括界面尺寸、圖標尺寸、可點擊高度規(guī)范、搜索欄高度規(guī)范以及界面元素之間的距離規(guī)范。
2. 12個絕佳的UI設(shè)計網(wǎng)站,助力你的創(chuàng)作之旅!
將為大家介紹12個絕佳的UI設(shè)計網(wǎng)站,這些網(wǎng)站不僅可以為你提供靈感,還可以幫助你學習新的技巧,助力你的創(chuàng)意之旅!dribbbleDribbble 是一個面向設(shè)計師的...
3. 移動端UI設(shè)計中常見的5種APP界面類型,你get到了嗎?
通過介紹移動端UI設(shè)計中的閃屏頁、引導頁、浮層引導頁、空白頁和首頁等5種APP界面類型,幫助大家更好地了解UI設(shè)計的基本知識
4. 10個免費學習UI設(shè)計的網(wǎng)站 提升你的設(shè)計能力
怎樣可以提升你的UI設(shè)計能力!第一個:站酷站酷想必是設(shè)計師都知道的一個網(wǎng)站,里面不止有UI設(shè)計的資源,還有其他設(shè)計的,不如:平面設(shè)計、網(wǎng)頁設(shè)計、字體...
5. 移動端列表頁和表單頁設(shè)計秘訣:讓你的APP點擊率翻倍
在移動端設(shè)計中,列表頁和表單頁是不可或缺的部分。一個好的列表頁和表單頁設(shè)計能夠讓用戶輕松地獲取信息并產(chǎn)生點擊欲望,從而提高點擊率。本文將為你...
6. 推薦10本適合UI設(shè)計師看的書籍,輕松掌握技能!
對于想要提高自己的設(shè)計能力和創(chuàng)造力的小白和UI設(shè)計師來說,這本書是一個很好的選擇。4.《設(shè)計的覺醒》(IKKO TANAKA)推薦理由: 這本書是日本現(xiàn)代平面...
7. 零基礎(chǔ)學UI設(shè)計要多久?培訓完能拿多少工資?
探索零基礎(chǔ)UI設(shè)計培訓的時長與薪資前景。了解數(shù)字藝術(shù)教育領(lǐng)域的專業(yè)課程,以及培訓后的職業(yè)發(fā)展機會。
8. 物聯(lián)網(wǎng)APP UI設(shè)計:創(chuàng)造智能硬件領(lǐng)域的沉浸式體驗
ui設(shè)計應(yīng)該讓用戶一目了然,能夠快速找到所需的信息和功能。在設(shè)計過程中,應(yīng)盡量使用簡潔的圖標、文字和色彩,避免過多的視覺干擾。符合用戶習慣:ui設(shè)...
9. 設(shè)計中的色彩心理學:淺析中西方色彩的歷史演變與設(shè)計應(yīng)用
摘要:本文探討了色彩的歷史演變和設(shè)計應(yīng)用。通過對色彩在早期文明社會中的實用運用、不同文化背景下色彩觀念的差異、色彩在設(shè)計中的重要性以及新興技...
10. 武漢UI設(shè)計培訓班費用怎么樣?想學UI設(shè)計要多少錢?
想了解武漢UI設(shè)計培訓班的費用是多少嗎?不知道學UI設(shè)計要花多少錢?不妨看看這篇文章,了解UI設(shè)計培訓班的學費價格以及學習內(nèi)容。
最新文章
同學您好!