向上轉(zhuǎn)型 向上轉(zhuǎn)型:把對(duì)某個(gè)對(duì)象的引用視為對(duì)其基類型的引用的做法被稱作為向上轉(zhuǎn)型 后期綁定:在運(yùn)行時(shí)根據(jù)對(duì)象的類型進(jìn)行綁定,也叫作動(dòng)態(tài)綁定或者運(yùn)行時(shí)綁定;在Java中除了st...
向上轉(zhuǎn)型 向上轉(zhuǎn)型:把對(duì)某個(gè)對(duì)象的引用視為對(duì)其基類型的引用的做法被稱作為向上轉(zhuǎn)型 后期綁定:在運(yùn)行時(shí)根據(jù)對(duì)象的類型進(jìn)行綁定,也叫作動(dòng)態(tài)綁定或者運(yùn)行時(shí)綁定;在Java中除了st...
組合:只需要在新的類中產(chǎn)生已有類的對(duì)象,由于新的類是已有類的對(duì)象所組成,所以這種方法稱為組合 繼承:按照已有類的類型來(lái)創(chuàng)建新類,無(wú)需改變已有類的形式,采用已有類的形式并在其中...
用引用操作對(duì)象 每種編程語(yǔ)言都有自己的操縱內(nèi)存中元素的方式,在Java中一切都被視為對(duì)象,操縱的標(biāo)識(shí)符實(shí)際上是對(duì)象的一個(gè)引用;可以將這一情形想象成用遙控器(引用)來(lái)操縱電視機(jī)...
如何判斷一張圖片是否為GIF圖 根據(jù)后綴名判斷:一般服務(wù)器返回圖片時(shí)都有后綴名,這個(gè)時(shí)候我們可以根據(jù)文件的后綴名來(lái)判斷;但是根據(jù)后綴名判斷不可靠,有可能是用戶手動(dòng)修改的文件后...
startActivity() 流程分析 (SDK源碼為28) 當(dāng)我們從手機(jī)桌面點(diǎn)擊應(yīng)用圖標(biāo)時(shí),這時(shí)候就會(huì)打開(kāi)我們的應(yīng)用程序,在這個(gè)過(guò)程中發(fā)生了什么事情,整個(gè)流程是怎么樣的?...
前言 Android事件分發(fā)機(jī)制是Android開(kāi)發(fā)者必須了解的基礎(chǔ) 網(wǎng)上有大量關(guān)于Android事件分發(fā)機(jī)制的文章,但存在一些問(wèn)題:內(nèi)容不全、思路不清晰、無(wú)源碼分析、簡(jiǎn)單問(wèn)...
基本使用 添加依賴 定義Api請(qǐng)求接口倉(cāng)庫(kù) 發(fā)起網(wǎng)絡(luò)請(qǐng)求 框架結(jié)構(gòu) RxJava的整體結(jié)構(gòu)是一條鏈 鏈的最上游:生產(chǎn)者(被觀察者) Observable/Single/Fl...
第一章:緒論 數(shù)據(jù)結(jié)構(gòu)包含:邏輯結(jié)構(gòu),存儲(chǔ)結(jié)構(gòu),對(duì)數(shù)據(jù)的運(yùn)算邏輯結(jié)構(gòu):線性結(jié)構(gòu)(線性表,棧,隊(duì)列,串,數(shù)組,廣義表)非線性結(jié)構(gòu)(樹(shù),圖,集合)物理結(jié)構(gòu)(存儲(chǔ)結(jié)構(gòu)):順序存儲(chǔ),...
起因 最近項(xiàng)目有個(gè)新的需求,就是社區(qū)要實(shí)現(xiàn)本地的視頻錄制,預(yù)覽,上傳然后社區(qū)播放的功能,由于之前項(xiàng)目重構(gòu)的時(shí)候,為了節(jié)省時(shí)間 整個(gè)社區(qū)的功能都交由h5開(kāi)發(fā),現(xiàn)在要添加本地視頻...
今天在開(kāi)發(fā)的時(shí)候遇到了一個(gè)兼容性問(wèn)題,原場(chǎng)景是我的項(xiàng)目是用的Support包,由于要實(shí)現(xiàn)自定義視頻拍攝,時(shí)間比較緊,就尋找了一個(gè)開(kāi)源項(xiàng)目(使用AndroidX開(kāi)發(fā)),根據(jù)項(xiàng)目...
在Activity的onResume方法中view.post(Runnable)能獲取到View寬高嗎? 在Activity的onResume方法中view的post(Run...
在學(xué)習(xí)WebView的時(shí)候就知道了WebView會(huì)出現(xiàn)很多稀奇古怪的問(wèn)題,真碰上的時(shí)候還是焦頭爛額,很多問(wèn)題的解決方案要在網(wǎng)上找很久很久很久。這里做了稍微全面的總結(jié)。 劃重點(diǎn)...
Looper.loop為什么不會(huì)阻塞掉UI線程? Android中為什么主線程不會(huì)因?yàn)長(zhǎng)ooper.loop()里的死循環(huán)卡死? 進(jìn)程:每個(gè)app運(yùn)行時(shí)首先會(huì)創(chuàng)建一個(gè)進(jìn)程,該...
哪些 Context調(diào)用 startActivity 需要設(shè)置NEW_TASK,為什么? 最常見(jiàn)的就是 Application 需要設(shè)置 NEW_TASK了,為什么需要呢? ...
它有什么能力和作用? 查看MessageQueue中的IdleHandler源碼發(fā)現(xiàn),當(dāng)消息隊(duì)列空閑時(shí)會(huì)執(zhí)行IdleHandler的queueIdle()方法,該方法返回一個(gè)...
ThreadLocal 是用來(lái)存儲(chǔ)指定線程的數(shù)據(jù)的,當(dāng)某些數(shù)據(jù)的作用域是該指定線程并且該數(shù)據(jù)需要貫穿該線程的所有執(zhí)行過(guò)程時(shí)就可以使用ThreadLocal存儲(chǔ)數(shù)據(jù),當(dāng)某線程使...
變量修飾符 為什么App Module中的R.java文件的變量是final修飾而Lib Module中R.java文件卻不是? R文件是由編譯器自動(dòng)生成,每個(gè)模塊中的R文件...