原创 WorkManager 一、背景 二、初始化源碼 三、非約束條件任務的執行源碼 四、有約束條件任務的執行源碼

Android知識總結 一、背景 1.1、特點 保證用戶的任務一定會執行 記錄更新每一個任務的信息/狀態【Room數據庫的更新】,手機重啓,APP被殺掉 都一定會執行,因爲同學們要記住一句話:Google說WorkManager是保證你

原创 Navigation(二) 一、使用navigation角度上分析源碼

Android知識總結 一、使用navigation角度上分析源碼 1、Fragment override fun onViewCreated(view: View, savedInstanceState: Bundle?) { s

原创 DataBinding(一) 一、應用 DataBinding + LiveData 雙向監聽 二、原理分析

Android知識總結 一、應用 DataBinding + LiveData 雙向監聽 1.1、在build.gradle中配置 dataBinding { enabled = true } 1.2

原创 HashMap 一、前言 二、HashMap基礎 三、put 元素 四、轉換紅黑樹 五、HashMap擴容機制 六、獲取元素 (get) 七、移除元素 (remove)

Android知識總結 一、前言 隨着JDK(Java Developmet Kit)版本的更新,JDK1.8對HashMap底層的實現進行了優化,例如引入紅黑樹的數據結構和擴容的優化等。 HashMap:它根據鍵的hashCode值存儲

原创 Lifecycle 一、添加依賴 二、源碼講解 三、使用 四、關係圖

Android知識總結 一、添加依賴 1、非androidX項目引入: dependencies { //運行時 implementation "android.arch.lifecycle:runtime:1.1.1" // 編譯期

原创 Fragment(二) 一、生命週期調用流程 二、Fragment 三、提交任務

Android知識總結 注意:分析的是 androidx 一、生命週期調用流程 運用Fragment時,Activity 要繼承 FragmentActivity,我們先看FragmentActivity#onCreate fin

原创 ViewPager 一、測量 二、執行流程 三、Adapter 四、重寫 onMeasure 方法

Android知識總結 一、測量 1.1、onMeasure @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { //設

原创 PKMS(二) 一、權限的分類 二、權限申請代碼 三、權限申請源碼流程 四、校驗權限流程 五、總結

Android知識總結 一、權限的分類 系統權限分爲兩類:正常權限 和 危險權限。 正常權限不會直接給用戶隱私權帶來風險。如果您的應用在其清單中列出了正常權限,系統將自動授予該權限。 危險權限會授予應用訪問用戶機密數據的權限。如果您的

原创 RecyclerView(三) 一、預加載流程 二、代碼展示

Android知識總結 一、預加載流程 有RecyclerView.onTouchEvent的ACTION_MOVE事件進入分析 GapWorker mGapWorker; public boolean onTouchEvent(Moti

原创 Activity 啓動流程(一) 一、Activity的啓動過程 二、判斷Activity是否註冊

一、Activity的啓動過程 ActivityManagerService:activity的啓動以及生命週期都統一由ActivityManagerService管理,而ActivityManagerService處於SystemSe

原创 RecyclerView(二) 一、緩存 二、緩存 mCachedViews

一、緩存 二、緩存 mCachedViews 執行LinearLayoutManager.onLayoutChildren方法 public void onLayoutChildren(RecyclerView.Recycler recy

原创 事件處理機制(二) 一、在ViewGroup 事件分發 二、在View中 事件處理 三、onTouch 和 onClick 執行的位置和關係

Android知識總結 一、在ViewGroup 事件分發 ViewGroup#dispatchTouchEvent 分發事件 public boolean dispatchTouchEvent(MotionEvent ev) {

原创 事件處理機制(一) 一、事件接收流程 二、View繼承關係調用

Android知識總結 一、事件接收流程 首先我們在ViewRootImpl#setView創建View的接收事件 public void setView(View view, WindowManager.LayoutParams

原创 View 繪製流程(二) 一、測量 二、View 解析 三、UI 刷新

Android知識總結 一、測量 private void performTraversals() { //這裏的mView在setView中被賦值爲DecorView final View hos

原创 View 繪製流程(一) 一、Activity的onResume流程 二、View 添加流程 三ViewRootImpl

Android知識總結 一、Activity的onResume流程 在ResumeActivityItem的execute方法執行 public void execute(ClientTransactionHandler clien