原创 ButterKnife R2作用和刪除

在使用ButterKnife時library工程的註解會使用R2, 爲什麼使用R2而不是R呢? 如上圖所示R.class中參數定義使用了final關鍵字, 即R.class裏全部是常量; 而R2.class裏全部是變量。 PS

原创 Activity渲染完成第一幀時機

Activity第一幀渲染涉及知識點setContentView流程、幀繪製流程、SurfaceFlinger等。 統計開始時間: hook ActivityThread的Instrumentation, 得到Activity各

原创 sqlitedatabase is locked

在操作Orm數據庫sqlite時, 當存在多線程/多進程並行寫時報錯。 支持同一時刻多個讀, 但同一時刻只能有一個寫(不能有讀);  簡單記: 讀寫、寫寫是互斥的, 讀讀是可以併發的。       因爲多線程、多進程可以通過數據庫名稱操

原创 Android性能優化系列-監聽View inflate週期並動態替換

LayoutInflater hook點 在Activity裏執行setContentView或者inflate佈局文件最終都會走到如下代碼: LayoutInflater.java View createViewFrom

原创 再看一遍Retrofit

說起來Retrofit是Android App常用的輪子, 原理比較簡單; 就是通過動態代理並獲取函數註解, 從而方便實現http請求邏輯; 從架構角度, 我們能從Retrofit源碼裏學到什麼呢? 1、深入理解動態代理的應用範圍

原创 Flutter開發Feed流筆記一

第一個知識點: 如何隱藏AppBar? 包一層寬高等於0的父容器就可以了。 return new Scaffold( appBar: PreferredSize( child: AppBar(

原创 Android根據座標找到對應的View

在界面上點擊按鈕時,想想安卓是如何找到能響應事件的頂層View的? 如果給你座標x、y, 你能找到對應的頂層View麼? 首先安卓佈局根節點是DecorView,並呈現爲多叉樹結構; 每個頂層View都是一個葉節點; 需求:手指在

原创 Java和Kotlin編譯基礎知識

Java和Kotlin都是跨平臺語言, 歸功於在編譯時生成的字節碼與平臺無關, jvm在裝載字節碼後即可運行。 Java Kotlin 編譯 javac kotlinc 運行 java kotlin J

原创 貝殼找房APP安裝包瘦身

一、背景 在滿足產品、UI要求的前提下,儘量減少安裝包體積。 以customer插件爲例: 插件大小爲5MB, 其中1MB是dex,而bkbase佔了dex的580KB; 3.1MB是圖片。 減少res目錄體積效果會更明顯。

原创 Kotlin object關鍵字詳解

一、object用途 1、用戶標識匿名內部類; 2、對象說明(編譯時生成靜態實例)。 二、修飾內部類對象 btn.setOnClickListener(object: OnClickListener { ov

原创 安卓View點擊/曝光的監聽方式

Android點擊、曝光事件的監聽分散在代碼的各個角落, 不利於開發維護。 其實可以將這2種行爲收斂到一起, 運行時監聽Activity的生命週期,即ActivityLifeCallBack回調; 在onResume或onStar

原创 安卓9啓動Activity流程分析和優化建議

思考如下問題: 1、Android9和之前版本startActivity的差異? 2、爲什麼startActivity是異步的? 3、爲什麼安卓Looper死循環不會導致UI卡死? Android從9.0版本開始修改了啓動Acti

原创 Android性能優化系列-IdleHandler

IdleHandler是在主線程空閒時執行同步任務, 即可以做優先級低的業務邏輯。 當手機拖動列表或點擊View時, MessageQueue肯定不爲空, 不會執行IdleHandler。 對於啓動新Activity可以在cmd

原创 Android Drawable緩存

Android獲取Drawable對象方式爲getResources().getDrawable(@DrawableResId int res), 只可能返回ColorDrawable、BitmapDrawable對象, 當然id

原创 Android View座標

手機屏幕左上角座標是(0, 0), 右下角座標是(w,h)即屏幕寬和高。 獲取View位置: View方法 說明 getLocationOnScreen 獲取View左上角距離屏幕左上角的距離x和y ge