背景 通常我們會(huì)遇到項(xiàng)目中存在很多模塊的情況,每次構(gòu)建都會(huì)花費(fèi)好久,但是又不知道每個(gè)模塊耗費(fèi)多久,因此使用該工具可以很方便的檢測,用來決定如何優(yōu)化項(xiàng)目結(jié)構(gòu) 實(shí)現(xiàn)效果 這樣很容...
背景 通常我們會(huì)遇到項(xiàng)目中存在很多模塊的情況,每次構(gòu)建都會(huì)花費(fèi)好久,但是又不知道每個(gè)模塊耗費(fèi)多久,因此使用該工具可以很方便的檢測,用來決定如何優(yōu)化項(xiàng)目結(jié)構(gòu) 實(shí)現(xiàn)效果 這樣很容...
在 Android 項(xiàng)目上工作,我們需要集成很多不同的依賴項(xiàng),為了管理這些依賴項(xiàng),我們使用像 Dagger 這樣的依賴注入框架。 但是要設(shè)置和使用 Dagger 需要大量的樣...
當(dāng)async作為根協(xié)程時(shí),被封裝到deferred對象中的異常才會(huì)在調(diào)用await時(shí)拋出。
當(dāng)async作為子協(xié)程時(shí),那么異常并不會(huì)等到調(diào)用await時(shí)拋出,而是立刻拋出異常。
kotlin<第九篇>:協(xié)程的異常處理一、組合上下文中的元素 CoroutineContext 是一組用于定義協(xié)程行為的元素。它由如下幾項(xiàng)組成: 可以使用 + 運(yùn)算符組合上下文: 二、協(xié)程上下文的繼承 對于新建的...
前言 前面我們說了Kotlin的反射就是把類的信息保存到了KClass,通過KClass可以獲取類的一些信息 可以查看文章: # Kotlin反射全解析2 -- 超級好用的K...
分享小伙伴的面經(jīng)~ 前言 雖然面試已經(jīng)過去大半年,但是依舊能回憶起當(dāng)初面試場景,所以憑著記憶給大家分享一段面經(jīng)。2020年疫情期間我總共面試了6家公司分別是阿里巴巴(已入職)...
這是 Stack Overflow 上最熱門的幾個(gè) Kotlin 問題,每個(gè)問題如果更深入的分析,都可以單獨(dú)寫一篇文章,后面我會(huì)針對這些問題,在進(jìn)一步的分析。 通過這篇文章你...
一、概述 ANR(Application Not responding),是指應(yīng)用程序未響應(yīng),Android系統(tǒng)對于一些事件需要在一定的時(shí)間范圍內(nèi)完成,如果超過預(yù)定時(shí)間能未能...
前言 我們繼續(xù)來聊反射,或許對于Java開發(fā)者來說,Class很熟悉,不過不熟悉也沒事,我們來看Kotlin中的反射類:KClass。 至于什么是反射可以查看前面一篇文章: ...
什么是注解 注解,通俗的來說,就是像注釋一樣,是由程序員在代碼中加入的一種“標(biāo)注”,不影響所編寫的原有代碼的執(zhí)行。而這種標(biāo)注(注解)可以被編碼用的IDE、編譯器、類加載器的代...
Android中多個(gè)彈窗的排隊(duì)展示 在實(shí)際的開發(fā)中,我們會(huì)遇到多個(gè)彈窗的問題,又不能一次全部彈出,所以我們的代碼就是 if else if else 循環(huán)嵌套。 例如我們在工...
請點(diǎn)贊,你的點(diǎn)贊對我意義重大,滿足下我的虛榮心。?? Hi,我是小彭。本文已收錄到 GitHub · Android-NoteBook[https://github.com/p...
前言 本文屬于《Android構(gòu)建MVVM》系列開篇,共六個(gè)篇章,詳見目錄樹該系列文章旨在為Android的開發(fā)者入門MVVM架構(gòu),掌握其基本開發(fā)模式輔以講解Android ...
概念 實(shí)際就是kotlin官方提供的線程API,相當(dāng)于AsyncTask 特性:非阻塞掛起,可掛起/恢復(fù)執(zhí)行 本質(zhì):協(xié)程就是個(gè)線程框架協(xié)程的掛起本質(zhì)就是線程切出去再切回來 依...
需求:界面由兩部分組成,頂部一個(gè)圖片,圖片下面是列表。在列表滑動(dòng)時(shí),圖片跟著滑動(dòng)。并且列表要類似ViewPager,一次滑動(dòng)一個(gè)item。 實(shí)現(xiàn):CoordinatorLay...
MVC、MVP和MVVM是常見的Android三種架構(gòu)設(shè)計(jì),隨著時(shí)間的推移,MVC使用率逐漸下降,MVP和MVVM的使用相對比較廣泛一些,還是那句話:沒有最好的架構(gòu),只有最適...
真的是如你說的這樣嗎?連續(xù)多次調(diào)用setValue優(yōu)化后只取最有一次?感覺這里是不對的,可以試一下哦。
postValue應(yīng)該是只取最新一次,而setValue在UI可見狀態(tài)下每次都能接受到的;
文中提到第二點(diǎn):2.如果在執(zhí)行中又來了一條數(shù)據(jù)雖然由于mDispatchingValue 的緣故retun了本次執(zhí)行..
這里似乎有問題呢,都是在主線程中執(zhí)行的,怎么會(huì)在執(zhí)行中又來一條數(shù)據(jù)???
這種情況只會(huì)發(fā)生在主線程遞歸調(diào)用的情況下。所以上面兩個(gè)變量是用來控制遞歸調(diào)用的。
比如在onChanged()中又執(zhí)行了setValue();
LiveData數(shù)據(jù)通知解析以及死鎖問題處理前言 LiveData是Android常用的組件,它代表具有生命周期的數(shù)據(jù),是MVVM框架組成不可或缺的一部分 問題場景 在我們的代碼案例中,我們點(diǎn)擊A頁面的List中的一個(gè)...