原创 Coil圖片加載庫

Coil 是一個 Android 圖片加載庫,通過Kotlin協程的方式加載圖片。Coil 名字的由來:取 Coroutine Image Loader 首字母得來。 Coil的優勢: 更快: Coil 在性能上有很多優化,包括內存緩存和

原创 自定義LayoutManager仿探探切卡片效果

探探效果: demo效果如下: LayoutManager自定義 對於自定義LayoutManager我們主要處理好三件事情,就所有的問題就都迎刃而解了: 佈局每個ItemView 處理滑動事件 緩存重用ItemView Layou

原创 Android面試知識點總結(九)

invalidate()、requestLayout() 區別 結論: requestLayout方法會導致View的onMeasure、onLayout、onDraw方法被調用;invalidate方法則只會導致View的onDr

原创 Android獲取View的座標位置各種方式

1.getLeft()、getTop()、getRight()、getBottom() 獲得 View 相對 父View 的座標 view.apply { left top

原创 PendingIntent使用解析

PendingIntent 中的單詞 “pending” 指延遲或掛起,就是指它是延遲的或掛起的。一句話概括,PendingIntent 一種是支持授權其他應用以當前應用的身份執行包裝的 Intent 操作的系統特性。 什麼場景下會使用 P

原创 關於ViewModel的一系列問題總結

ViewModel 爲什麼被設計出來,解決了什麼問題 1.不會因爲屏幕旋轉而銷燬,減少了維護狀態的工作。 2.由於在作用域內單一實例的特性,使得多個fragment之間可以方便通信,並且維護同一個數據狀態。 3.完善了MVVM架構,使得解耦

原创 RecyclerView緩存複用原理

RecyclerView緩存複用機制 來到RecyclerView的Adapter代碼中: @NonNull @Override public MyViewHolder onCreateViewHolder(@Non

原创 Semaphore(信號量)的使用

信號量,是一種共享鎖,多個線程同時訪問一個資源時,通過它實現同一時刻的訪問線程數量。最常見的使用場景就是高併發下的限流。 Semaphore常用方法說明 acquire() 獲取一個令牌,在獲取到令牌、或者被其他線程調用中斷之前線程一

原创 JVM中對象創建過程

1.類加載檢查 虛擬機遇到一條 new 指令時,首先檢查這個指令的參數常量池中找到一個類符號引用,並且檢查這個符號引用代表的類是否已經被加載,解析,初始化過。如果沒有必須先執行類的加載初始化過程。 2.分配內存 在類加載檢查通過後,接着就

原创 Java wait notify解析

方法/ 作用 wait: 線程自動釋放佔有的對象鎖,並等待notify。 notify: 隨機喚醒一個正在wait當前對象的線程,並讓被喚醒的線程拿到對象鎖 notifyAll: 喚醒所有正在wait當前對象的線程,但是被喚

原创 LeetCode廣度、深度優先搜索

廣度優先搜索 廣度優先搜索(也稱寬度優先搜索,縮寫BFS即即Breadth First Search)是連通圖的一種遍歷算法。這一算法也是很多重要的圖的算法的原型。Dijkstra單源最短路徑算法和Prim最小生成樹算法都採用了和廣度優先搜

原创 LeetCode之回溯算法

回溯法也可以叫做回溯搜索法,它是一種搜索的方式。回溯是遞歸的副產品,只要有遞歸就會有回溯。因爲回溯的本質是窮舉,窮舉所有可能,然後選出我們想要的答案,如果想讓回溯法高效一些,可以加一些剪枝的操作,但也改不了回溯法就是窮舉的本質。 回溯法,一

原创 LeetCode之雙指針法

雙指針是一種思想或一種技巧並不是特別具體的算法。 具體就是用兩個變量動態存儲兩個結點,來方便我們進行一些操作。通常用在線性的數據結構中。 三數之和 給你一個整數數組 nums ,判斷是否存在三元組 [nums[i], nums[j], nu

原创 Android加載超大圖實戰

如果是高清大圖,那就說明不允許進行圖片壓縮,比如微博長圖,清明上河圖。 所以我們就要對圖片進行局部顯示,這就用到BitmapRegionDecoder屬性,主要用於顯示圖片的某一塊矩形區域。實際項目使用中,我們可以根據手勢滑動,然後不斷更新

原创 Android搜索本地文件

最近做了一個搜索本地文件功能,搜索文件範圍包括日誌,apk,pdf,txt,jpg,zip,mp3,mp4等各種文件。使用了contentResolver訪問本地文件數據,效果如下: 文件實體類FileBean: data class F