原创 RxJava防重複點擊原理

(代碼基於rxbinding-1.0.1) 使用RxJava實現View防重複點擊功能比較簡單 fun View.noDoubleClick(action: Action1<Void>) { @Suppress("DEPR

原创 Activity對象創建到顯示到屏幕

代碼基於Android 28(9.0、pie)分析 一、引子 在Activity啓動流程分析一文中,分析了從startActivity()到Activity對象創建的過程,之後分析下Activity對象創建到顯示到屏幕的過程。 二

原创 xml佈局中系統View標籤爲何不需要帶包名

一、引子 在xml文件中,如果想使用TextView、WebView、Button、RelativeLayout等系統View,直接寫類名即可,但如果是自定義的View,則需要寫帶有包名的全類名,否則運行時會報錯。這是爲什麼呢?

原创 Android一些細節點

一.LayoutInflater類的inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)方法 1.inflate(reso

原创 (未完)Android 點擊事件響應總結

一、從Activity/Dialog到DecorView Activity或Dialog先響應到dispatchTouchEvent()事件,拿Activity爲例 public boolean dispatchTouchEven

原创 RecyclerView優化總結

本文主要總結下RecyclerView使用中的一些優化措施,先了解一些相關的知識點。 一、鋪墊 1.RecycleBin RecycleBin是一個簡單的對象複用池,它通過SparseArray<Queue>類型的變量實現,非常像

原创 “同時”啓動兩個Activity

       產品提出一個需求,需要從Activity1跳轉到Activity3,但從Activity3返回時要返回到Activity2。        最初的實現方式是,從Activity3返回(調用finish())時,從Activ

原创 Activity啓動及界面顯示、刷新和銷燬

代碼基於Android 28(9.0、pie)分析 一、startActivty()到Activity對象創建 Activity.startActivity()、Activity.startActivityForResult()、

原创 Android 點擊事件響應總結

一、從Activity/Dialog到DecorView Activity或Dialog先響應到dispatchTouchEvent()事件,拿Activity爲例 public boolean dispatchTouchEven

原创 RecyclerView.RecycledViewPool+BaseQuickAdapter+FooterLayout造成IllegalStateException

一、RecyclerView有一個優化設置,如果多個RecyclerView擁有相同的item佈局,可以通過使用一個RecycledViewPool來減少緩存的View數目。 public void setRecycled

原创 DialogFragment的onDismiss()中爲何無法獲取到View的位置

一、問題發現 Android有一種切換輸入法顯示和隱藏的方法 val mInputManager = context?.getSystemService(Context.INPUT_METHOD_SERVICE) as? Inpu

原创 Android 頁面銷燬、重建與數據恢復

Android頁面銷燬、重建與數據恢復一、頁面銷燬和重建1.頁面銷燬2.頁面重建和數據恢復3.模擬頁面銷燬和重建二、一些拓展的問題1.View的數據恢復2.Fragment的數據恢復3.狀態信息的存儲和恢復原理4.Transact

原创 由TransactionTooLargeException引發的一些思考

引子 我所在部門的Android app維護時間比較久,一直保持在targetSdkVersion 22。最近oppo、vivo幾家應用商店停止targetSdkVersion低於26的app更新,迫不得己,同事升級了target

原创 使用AsyncLayoutInflater預加載,加快列表渲染

引子 列表卡頓是一個很常見的問題,通常的理解是滑動過程中卡頓,有很多常規的處理方法,從最簡單的複用到降低佈局複雜度到部分佈局動態加載。本文介紹下列表初次填充數據時卡頓的處理方法。 AsyncLayoutInflater 在查找頁面fp

原创 View.getContext()從何而來

一、引子 曾經遇到一個問題,使用View的Context變量調用startActivity()方法,出現一個異常:“Calling startActivity() from outside of an Activity contex