文章末有哈
Kotlin下的5種單例模式前言 最近在學(xué)習(xí)Kotlin這門語言,在項(xiàng)目開發(fā)中,運(yùn)用到了單例模式。因?yàn)槠浔磉_(dá)方式與Java是不同的。所以對不同單例模式的實(shí)現(xiàn)進(jìn)行了分別探討。主要單例模式實(shí)現(xiàn)如下: 餓漢式...
文章末有哈
Kotlin下的5種單例模式前言 最近在學(xué)習(xí)Kotlin這門語言,在項(xiàng)目開發(fā)中,運(yùn)用到了單例模式。因?yàn)槠浔磉_(dá)方式與Java是不同的。所以對不同單例模式的實(shí)現(xiàn)進(jìn)行了分別探討。主要單例模式實(shí)現(xiàn)如下: 餓漢式...
@RythmCoder 這個(gè)看你簡歷上整么寫了,如果寫了,別人肯定要問的
BAT大廠Android面試知識點(diǎn),請客官拿好前言 年年寒冬,年年也擋不住一個(gè)安卓程序員追求大廠的決心。想要進(jìn)入大廠,我們需要掌握哪些知識點(diǎn)呢?這里,我為大家梳理了一個(gè)整體的知識架構(gòu)。整體包括Java、Android、算...
沒有,阿里系
BAT大廠Android面試知識點(diǎn),請客官拿好前言 年年寒冬,年年也擋不住一個(gè)安卓程序員追求大廠的決心。想要進(jìn)入大廠,我們需要掌握哪些知識點(diǎn)呢?這里,我為大家梳理了一個(gè)整體的知識架構(gòu)。整體包括Java、Android、算...
quiteSafely() 回收的消息是比當(dāng)前結(jié)束消息循環(huán)時(shí)間點(diǎn)大的消息,比當(dāng)結(jié)束消息循環(huán)時(shí)間點(diǎn)小的消息是不會(huì)被回收的。也就是說 quiteSafely() 執(zhí)行時(shí),可能有一些部分消息會(huì)被 Looper 取出執(zhí)行。而 quite() 方法是直接退出消息循環(huán),消息隊(duì)列中的消息都不會(huì)被執(zhí)行。那么優(yōu)勢已經(jīng)很明顯了
Android Handler機(jī)制之循環(huán)消息隊(duì)列的退出該文章屬于Android Handler系列文章,如果想了解更多,請點(diǎn)擊《Android Handler機(jī)制之總目錄》 前言 在上幾篇文中我們介紹了整個(gè)消息的循環(huán)機(jī)制以及消息...
@WAN____ 能幫助到你,真的非常開心??。與君共勉。
在安卓的道路上鏗鏘前行時(shí)間過的真快,馬上現(xiàn)在已是2018年的最后一個(gè)月了。算算日子,從畢業(yè)到現(xiàn)在。從事安卓開發(fā),快三個(gè)年頭。這一路走來,著實(shí)不易,想和大家分享我的故事。分享這一路走來的點(diǎn)點(diǎn)滴滴與心...
查看章節(jié)--ViewPager+Fragment 模式下的老方案 中的第二、三幅圖,你會(huì)發(fā)現(xiàn)ThreeFragment 的調(diào)用方法順序?yàn)?
1. ThreeFragment:setUserVisibleHint(boolean isVisibleToUser) isVisibleToUser——>false
2. ThreeFragment:onResume
3.ThreeFragment:setUserVisibleHint(boolean isVisibleToUser) isVisibleToUser——>true
也就是說當(dāng)ThreeFragment的setUserVisibleHint(boolean isVisibleToUser) isVisibleToUser——>true時(shí),ThreeFragment 的onResume 方法已經(jīng)執(zhí)行完畢了。而在1,2步驟時(shí),ThreeFragment 并不可見,實(shí)際可見的位置是在步驟3。所以我們需要在 setUserVisibleHint()中調(diào)用 judgeLazyInit(),來保證當(dāng)ThreeFragment可見時(shí),能夠正確的進(jìn)行懶加載,而isCallResume這個(gè)變量,就是用來來判斷ThreeFragment 的onResume 方法是否已經(jīng)執(zhí)行。這樣講不知道你清楚沒有??
Androidx 下 Fragment 懶加載的新實(shí)現(xiàn)前言 年后最后一篇文章啦,在這里先祝大家新年快樂~最重要的抽中全家福,明年繼續(xù)修福報(bào)?? 以前處理 Fragment 的懶加載,我們通常會(huì)在 Fragment 中處理 setU...
因?yàn)檫@里有三個(gè)線程,所以在調(diào)度的時(shí)候可能打印順序會(huì)有不同,這里看實(shí)際的獲取的值就行了,不用關(guān)注打印順序。
Android Handler機(jī)制之ThreadLocal該文章屬于Android Handler系列文章,如果想了解更多,請點(diǎn)擊《Android Handler機(jī)制之總目錄》 前言 要想了解Android 的Handle機(jī)制,我們...
RecyclerView滾動(dòng)位置,滾動(dòng)速度設(shè)置前言 最近開發(fā)中遇到了一個(gè)需求,需要RecyclerView滾動(dòng)到指定位置后置頂顯示,當(dāng)時(shí)遇到這個(gè)問題的時(shí)候,心里第一反應(yīng)是直接使用RecyclerView的smoothSc...
@potato丶土豆_ff42 這么巧嗎???哈哈哈,趕快白嫖一波
為什么Java的泛型要用"擦除"實(shí)現(xiàn)前言 在 Java 中的 泛型,常常被稱之為 偽泛型,究其原因是因?yàn)樵趯?shí)際代碼的運(yùn)行中,將實(shí)際類型參數(shù)的信息擦除掉了(Type Erasure)。那是什么原因?qū)е铝?Java...
前言 在 Java 中的 泛型,常常被稱之為 偽泛型,究其原因是因?yàn)樵趯?shí)際代碼的運(yùn)行中,將實(shí)際類型參數(shù)的信息擦除掉了(Type Erasure)。那是什么原因?qū)е铝?Java...
前言 ViewModel 作為 Jetpack 中的明星組件,相信大家都對其有一定的了解。在 Google 的官方介紹中也詳細(xì)的羅列了 ViewModel 的優(yōu)點(diǎn),如: 可以...
navagation 其實(shí)是底層其實(shí)是用replace fragment的方式來切換Fragment的,所以會(huì)完整的走Fragment的生命周期
但是對于FragmentPagerAdapter與FragmentSaterPagerAdapter的情況,在FragmentPagerAdapter對應(yīng)執(zhí)行的是Fragment生命周期中onPause()-onDestroyView()的方法,并沒有執(zhí)行onDestroy和onDetach方法
在FragmentSaterPagerAdapter對應(yīng)執(zhí)行的是Fragment聲明onPause()-onDestory(),所以為了滿足所有的情況,最好是在onDestoryView()方法中,進(jìn)行 isLoaded 的判斷
Androidx 下 Fragment 懶加載的新實(shí)現(xiàn)前言 年后最后一篇文章啦,在這里先祝大家新年快樂~最重要的抽中全家福,明年繼續(xù)修福報(bào)?? 以前處理 Fragment 的懶加載,我們通常會(huì)在 Fragment 中處理 setU...
前言 年后最后一篇文章啦,在這里先祝大家新年快樂~最重要的抽中全家福,明年繼續(xù)修福報(bào)?? 以前處理 Fragment 的懶加載,我們通常會(huì)在 Fragment 中處理 setU...
@看不見我_e968 是這意思。
Java并發(fā)編程之Java內(nèi)存模型該文章屬于《Java并發(fā)編程》系列文章,如果想了解更多,請點(diǎn)擊《Java并發(fā)編程之總目錄》 一、并發(fā)的起源 為了提高計(jì)算機(jī)處理數(shù)據(jù)的速度?,F(xiàn)代的計(jì)算機(jī)都支持多任務(wù)處理。在32...
@看不見我_e968
線程A對變量a進(jìn)行賦值操作,需要先經(jīng)過(read->load )兩個(gè)操作,將主內(nèi)存中的a變量的值存入自己的工作內(nèi)存變量副本中(用a1表示),然后再通過(use)將 a1 的值交給執(zhí)行引擎進(jìn)行計(jì)算。接著調(diào)用(assign)將執(zhí)行引擎后的值(計(jì)算過后新的值)賦值給 a1 ,最后在通過(store-write)將線程A中 a1的值 賦值給變量a。
這里所說的一個(gè)線程(A)多次use與assign操作,是代表著線程 A 在工作內(nèi)存中對共享變量 a (假設(shè)初始值為0)進(jìn)行了多次操作。而另一個(gè)線程(B)是在線程(A)操作之前對共享變量a 進(jìn)行了read、load操作。那么當(dāng)線程 (A )使用 (store-write)將線程A中工作內(nèi)存的值存入主內(nèi)存時(shí),這個(gè)時(shí)候線程( B )在工作內(nèi)存中存儲的值仍然是主內(nèi)存中變量a的初始值,也就是 0。那么這個(gè)時(shí)候如果線程 B繼續(xù)對 a進(jìn)行操作。那么就會(huì)出現(xiàn)問題。也就是我們常說的線程安全的問題。所以這個(gè)時(shí)候需要解決工作內(nèi)存中的可見性問題。也就是線程A通過 use 與assign 后,線程B需要知道線程A中修改后的值。
Lock 操作主要會(huì)清除線程中工作內(nèi)存的變量的值。每次Lock操作之后需要重新read load 操作,也就是說線程每次將工作內(nèi)存中的值刷新到主內(nèi)存后,如果它還需要對同一變量進(jìn)行操作,那么它下一次需要重新執(zhí)行這八個(gè)操作。
Java并發(fā)編程之Java內(nèi)存模型該文章屬于《Java并發(fā)編程》系列文章,如果想了解更多,請點(diǎn)擊《Java并發(fā)編程之總目錄》 一、并發(fā)的起源 為了提高計(jì)算機(jī)處理數(shù)據(jù)的速度?,F(xiàn)代的計(jì)算機(jī)都支持多任務(wù)處理。在32...
@看不見我_e968 5.1其實(shí)就是講的是,多個(gè)線程操作同一變量a(初始值為0),因?yàn)樵贘ava中不同線程對應(yīng)的是自己的工作內(nèi)存,現(xiàn)在線程A,B都分別讀取了a變量的值,這個(gè)時(shí)候線程A修改a的值為1,線程B在自己的工作內(nèi)存中保存的變量a的值還是為0。如果想讓A線程修改后的值,讓線程B感知。那么就需要解決工作內(nèi)存的可見性問題。5.1中所描述的原子操作,是線程將變量讀取到自己工作內(nèi)存以及寫入到主內(nèi)存的設(shè)計(jì)到的幾個(gè)原子操作。這幾個(gè)操作都不能不打斷。與工作內(nèi)存的可見性沒有太大的關(guān)系。只是我將A線程并修改的a變量的值這個(gè)操作用原子操作來表示了。不知道這樣講你明白了沒有。
Java并發(fā)編程之Java內(nèi)存模型該文章屬于《Java并發(fā)編程》系列文章,如果想了解更多,請點(diǎn)擊《Java并發(fā)編程之總目錄》 一、并發(fā)的起源 為了提高計(jì)算機(jī)處理數(shù)據(jù)的速度?,F(xiàn)代的計(jì)算機(jī)都支持多任務(wù)處理。在32...