泛型的協(xié)變和逆變是什么?對應(yīng)于Java當(dāng)中,協(xié)變對應(yīng)的就是<? extends XXX>,而逆變對應(yīng)的就是<? super XXX>。 1. 泛型的協(xié)變 1.1 泛型協(xié)變的使...

泛型的協(xié)變和逆變是什么?對應(yīng)于Java當(dāng)中,協(xié)變對應(yīng)的就是<? extends XXX>,而逆變對應(yīng)的就是<? super XXX>。 1. 泛型的協(xié)變 1.1 泛型協(xié)變的使...
fvm及說明 GitHub官網(wǎng)[https://github.com/befovy/fvm] Flutter 版本管理:一個管理 Flutter SDK 版本的簡單 cli。...
結(jié)論:不要在服務(wù)端oneway接口中處理耗時操作,一旦用于高頻調(diào)用,服務(wù)端又處理耗時,再偶爾碰上cpu負(fù)荷高,很可能會發(fā)生其他關(guān)鍵調(diào)用偶現(xiàn)失敗的隱蔽問題,而且這個調(diào)用失敗不會...
ViewPager2是在RecyclerView的基礎(chǔ)上構(gòu)建而成的,意味著其可以復(fù)用RecyclerView對象的絕大部分特性,比如緩存復(fù)用機(jī)制等。 作為ViewPager2...
一、前言 SparseArray 是 Android 在 Android SdK 為我們提供的一個基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),其功能類似于 HashMap。與 HashMap 不同的是它...
一、為什么要用線程池 在開發(fā)過程中,如果需要經(jīng)常使用new Thread來處理相關(guān)任務(wù)。線程的頻繁新建與銷毀需要很大的開銷,如何高效利用多線程處理任務(wù),這時候就需要線程池來做...
Android View從設(shè)計(jì)到顯示到屏幕上,共用了三大步:measure、layout、draw。今天主要講講View是如何測量的。 以FrameLayout為例,從mea...
1 顯示系統(tǒng)概念 不論電腦,電視,手機(jī),我們看到的畫面都是由一幀幀的畫面組成的。FPS是圖像領(lǐng)域中的定義,是指畫面每秒傳輸幀數(shù),通俗來講就是指動畫或視頻的畫面數(shù)。每秒鐘幀數(shù)愈...
開發(fā)中可能會遇到要求文字根據(jù)固定寬度兩端對齊的需求,比如登錄的用戶名標(biāo)簽和密碼標(biāo)簽,但TextView沒有自帶這樣的功能,需要自定義view來實(shí)現(xiàn) Android組件有很多自...