1. ? 和 !! ?加在變量名后,系統(tǒng)在任何情況不會(huì)報(bào)它的空指針異常。!!加在變量名后,如果對(duì)象為null,那么系統(tǒng)一定會(huì)報(bào)異常! 上述是兩個(gè)符號(hào)的簡(jiǎn)單概念,為了更好的解...
第一、前言 ThreadLocal使用的是自定義的ThreadLocalMap,接下來我們來探究一下ThreadLocalMap的hash沖突解決方式。 ThreadLoca...
第一、前言 有些程序員在使用ThreadLocal的過程中會(huì)發(fā)現(xiàn)有內(nèi)存泄漏的情況,就猜測(cè)這個(gè)內(nèi)存泄漏與Entry中使用了弱引用的key有關(guān)系。 第二、內(nèi)存泄漏的相關(guān)概念 1....
singleInstance的Activity啟動(dòng)的Activity從屬TaskRecord問題,其實(shí)不看在哪創(chuàng)建,而是要看taskAffinity屬性,樓主實(shí)驗(yàn)的情況,ThirdActivity與MainActivity都是默認(rèn)同一個(gè)taskAffinity,所以壓入同一個(gè)棧,如果把ThirdActivity的taskAffinity改的與MainActivity不同,那么他就會(huì)新建TaskRecord了。另外SecondActivity一方面與MainActivity的taskAffinity相同,一方面是singleInstance需要?jiǎng)?chuàng)建新的獨(dú)享的TaskRecord,所以存在taskAffinity沖突,所以在任務(wù)棧中是不顯示的。
場(chǎng)景:singleinstance的Activity啟動(dòng)其他Activity會(huì)怎樣?四種啟動(dòng)模式的具體內(nèi)容大家可能都比較清楚了,但有些關(guān)于singleinstance啟動(dòng)模式的場(chǎng)景卻有點(diǎn)不太清楚。我們都知道singleinstance模式的Activity會(huì)...
應(yīng)該是寫的有一點(diǎn)點(diǎn)問題,流程應(yīng)該是這樣的:1. ViewRootImpl#scheduleTraversals開啟同步屏障;2. Choreographer#postCallback中發(fā)送異步消息;3.經(jīng)過一系列調(diào)用,發(fā)送完,開始回調(diào),執(zhí)行callback中的runnable,就是mTraversalRunnable,也就是執(zhí)行ViewRootImpl#doTraversal(),其中就會(huì)取消同步屏障
[轉(zhuǎn)]Android 消息機(jī)制中的同步屏障機(jī)制1、引言 我們知道,Android的消息機(jī)制就是Handler、Looper、Message、MessageQueue之間的運(yùn)作機(jī)制。本文假設(shè)大家對(duì) 它們都已經(jīng)有所了解,所以...
1. 什么是插樁? 用通俗的話來講,插樁就是將一段代碼通過某種策略插入到另一段代碼,或替換另一段代碼。這里的代碼可以分為源碼和字節(jié)碼,而我們所說的插樁一般指字節(jié)碼插樁。下圖是...
Handler相關(guān) 1. 用一句話概括Handler,并簡(jiǎn)述其原理 Handler是Android系統(tǒng)的根本,在Android應(yīng)用被啟動(dòng)的時(shí)候,會(huì)分配一個(gè)單獨(dú)的虛擬機(jī),虛擬機(jī)...
1. 可以用今日頭條的適配方式,修改系統(tǒng)的density 1.1 先確定按寬還是高為基準(zhǔn),進(jìn)行縮放適配。舉例選寬1.2 代碼中獲取設(shè)備的寬的像素值 / 設(shè)計(jì)稿寬的 dp值 =...
CoroutineScope: 定義新協(xié)程的范圍。每個(gè)協(xié)程構(gòu)建器都是CoroutineScope的擴(kuò)展,并繼承其coroutineContext以自動(dòng)傳播上下文元素和取消。獲...
在之前寫過這樣的一個(gè)例子,先來回顧一下: 也就是來演示runBlocking與coroutineScope之間的異同點(diǎn),當(dāng)時(shí)還闡述了一個(gè)對(duì)它的理論描述,也來回顧一下: 這里再...