Android基礎(chǔ)
- AIDL介紹以及使用說(shuō)明
- HandlerThread介紹及使用說(shuō)明
- IntentService介紹和使用說(shuō)明
- Touch事件的傳遞
- Bundle數(shù)據(jù)結(jié)構(gòu)
- ListView內(nèi)點(diǎn)擊Button事件傳遞
- IPC8種方式
- Handler原理
- TraceVIew的使用
- Binder原理介紹
Java基礎(chǔ)
計(jì)算機(jī)基礎(chǔ)
- HTTPS協(xié)議 = HTTP協(xié)議 + SSL/TLS協(xié)議
SSL的全稱是Secure Sockets Layer
TLS的全稱是Transport Layer Security
http://www.reibang.com/p/14cd2c9d2cd2 - 從地址欄輸入http://www.gaxis.cn這個(gè)URL之后,直到我的個(gè)人主頁(yè)加載完成息拜,中間到底發(fā)生了什么呢?
大概經(jīng)歷了以下過(guò)程:
- 分析域名(gaxis)
- TCP三次握手(嘿倦微,我能連你嗎?/完全OjbK啊正压。/那我連了啊欣福。)
- 建立TCP連接
- 瀏覽器發(fā)起HTTP請(qǐng)求
- 服務(wù)器響應(yīng)請(qǐng)求(哇兄弟你找我了,我收拾一下給你的數(shù)據(jù)和應(yīng)答碼——這里可以展開(kāi)講服務(wù)器如何響應(yīng))
- 瀏覽器解析html代碼并請(qǐng)求html中的js/css/圖片等資源
- 瀏覽器進(jìn)行頁(yè)面渲染呈現(xiàn)給用戶
設(shè)計(jì)模式
開(kāi)源庫(kù)
ListView中Button點(diǎn)擊事件被攔截的解決方案
在item的xml布局的根節(jié)點(diǎn)中添加屬性:
android:descendantFocusability=“blocksDescendants”
在button控件上添加屬性:
android:focusable=”false”
MVP
http://www.reibang.com/p/7398ec36d591
======
1焦履、AsyncTask
介紹:
AsyncTask是一種輕量級(jí)的異步任務(wù)類拓劝,可以在后臺(tái)線程池中執(zhí)行后臺(tái)的任務(wù),然后把執(zhí)行的進(jìn)度和最終的結(jié)果傳遞給主線程并在主線程中更新UI嘉裤。從實(shí)現(xiàn)上來(lái)說(shuō)郑临,AsyncTask封裝了Thread和Handler。但它并不適合特別耗時(shí)的任務(wù)屑宠,對(duì)于特別耗時(shí)的任務(wù)應(yīng)該使用線程池厢洞。
它是一個(gè)泛型抽象類,Params表示參數(shù)的類型典奉,Progress表示后臺(tái)任務(wù)進(jìn)度的類型躺翻,而Result表示結(jié)果的返回類。
使用特點(diǎn):
(1)它必須在主線程中創(chuàng)建卫玖,execute方法必須在主線程中調(diào)用
(2)execute方法只能執(zhí)行一次公你,雖然可以傳很多個(gè)參數(shù)(任務(wù))
工作原理:
AsyncTask實(shí)際上是對(duì)線程池和Handler進(jìn)行了封裝。
(1)任務(wù)執(zhí)行:
3.0之前假瞬,AsyncTask是并行執(zhí)行的陕靠,而3.0之后就變?yōu)榱舜袌?zhí)行嚣崭,并且開(kāi)發(fā)者可以選擇進(jìn)行并行執(zhí)行。原理是什么呢懦傍?實(shí)際上它內(nèi)部有兩個(gè)線程池,sDefaultExecutor是一個(gè)自己實(shí)現(xiàn)的串行的線程池芦劣,它是static的粗俱,說(shuō)明一個(gè)進(jìn)程內(nèi)的所有任務(wù)都是它來(lái)執(zhí)行,它的任務(wù)很簡(jiǎn)單虚吟,就是把任務(wù)放進(jìn)一個(gè)隊(duì)列中寸认,然后提醒另一個(gè)并行的線程池THREAD_POOL_EXECUTOR來(lái)取出執(zhí)行,如果有可取的并且當(dāng)前沒(méi)有任務(wù)在執(zhí)行就會(huì)被這個(gè)并行的線程池來(lái)執(zhí)行串慰。如果有任務(wù)在執(zhí)行自然不會(huì)執(zhí)行偏塞,當(dāng)這個(gè)任務(wù)執(zhí)行完之后又會(huì)重新提醒并行的線程池THREAD_POOL_EXECUTOR來(lái)取出隊(duì)列中的任務(wù)進(jìn)行執(zhí)行。所以從這個(gè)原理我們看出來(lái)它是串行執(zhí)行的邦鲫,原因就是老版本是并行的并且很多代碼依賴于這個(gè)邏輯灸叼。
(2)任務(wù)結(jié)果分發(fā)
它的內(nèi)部有一個(gè)static的handler,所以這也是它必須在UI線程中進(jìn)行初始化的原因庆捺,這樣可以保證Handler被正常的初始化古今。當(dāng)任務(wù)執(zhí)行完成后,就會(huì)將結(jié)果發(fā)送給Handler滔以,使得其在主線程被執(zhí)行捉腥。
2、HandlerThread
(1) HandlerThread本質(zhì)上是一個(gè)線程類,繼承了Thread
(2) HandlerThread有自己內(nèi)部的Looper對(duì)象你画,可以進(jìn)行Looper循環(huán)
(3) 通過(guò)獲取HandlerThread的Looper對(duì)象傳遞給Handler對(duì)象抵碟,可以在HandleMessage方法中執(zhí)行異步任務(wù)
(4) 有點(diǎn)事不會(huì)有阻塞,減少了對(duì)性能的消耗坏匪,缺點(diǎn)是不能同時(shí)進(jìn)行多任務(wù)處理拟逮,需要等待進(jìn)行處理,處理效率底
(5) 與線程池重并發(fā)不同适滓,HandlerThread是一個(gè)串行隊(duì)列唱歧,HandlerThread背后只有一個(gè)線程
3、IntentService
介紹:
僅僅是一個(gè)封裝了HandlerThread的Service而已粒竖,由于Service正常來(lái)說(shuō)也是執(zhí)行在主線程的颅崩,所以不能執(zhí)行耗時(shí)的操作。而IntentService在內(nèi)部維護(hù)有個(gè)HandlerThread蕊苗,它擁有自身的Handler沿后,對(duì)應(yīng)于HandlerThread的Looper。當(dāng)收到一個(gè)Intent時(shí)朽砰,它將Intent包裝到Message中直接發(fā)送給Handler來(lái)處理尖滚,從而避免了在主線程中進(jìn)行操作喉刘。
使用:
重寫onHandleIntent,在其中處理Intent漆弄,并且這個(gè)是不在主線程中運(yùn)行的睦裳。
IntentService是繼承并處理異步請(qǐng)求的一個(gè)類,在IntentService內(nèi)有一個(gè)工作線程來(lái)處理耗時(shí)操作撼唾,啟動(dòng)IntentService的方法和啟動(dòng)傳統(tǒng)Service方法一樣廉邑,同時(shí),當(dāng)任務(wù)執(zhí)行完成后倒谷,IntentService會(huì)自動(dòng)停止蛛蒙,而不需要手動(dòng)去控制或者stopSelf(),另外渤愁,可以多次啟動(dòng)IntentService牵祟,而每一個(gè)耗時(shí)操作會(huì)以工作隊(duì)列的方式在IntentService的onHandleIntent回調(diào)中執(zhí)行,并且抖格,每次只執(zhí)行一個(gè)任務(wù)诺苹,執(zhí)行完成一個(gè)再執(zhí)行第二個(gè)
作者:漸忘的歌
來(lái)源:CSDN
原文:https://blog.csdn.net/qq_35503221/article/details/80297404
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接雹拄!