原创 App啓動(三)Activity的創建

上一篇我們講到AMS在被遠程調用attachApplication方法後,會在attachApplicationLocked方法裏遠程調用ApplicationThread的bindApplication創建Application

原创 App啓動(一)Application的創建

大家都知道Java程序的入口是 main 方法,但在Android中我們只知道App啓動從Application開始,而Android是基於Java的,本身也是從main方法開始的,而這個 main方法是在ActivityThre

原创 View繪製流程的開啓

上一篇文章《Activity的創建》中我們說到了Activity創建後會調用其onCreate生命週期,而我們的onCreate方法一般這麼寫 @Override protected void onCreate(Bundle sa

原创 App啓動(二)AMS在Application創建過程中的調度

上一篇文章中我們說到ActivityThread通過AMS的attachApplication方法將mAppThread對象關聯到了AMS中,並且後面通過mAppThread對Application進行創建、生命週期的管理等。這次

原创 03-工廠方法模式

工廠方法模式 一、定義 定義一個用於創建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到子類 工廠方法模式的通用類圖如下 在工廠方法模式中,抽象產品類Product定義產品的共性,實現對事物最抽象的定義;Cr

原创 06-建造者模式

建造者模式(生成器模式) 一、定義 將一個複雜對象的構造與它的表示分離,使得同樣的構建過程可以創建不同的表示 建造者模式通用類圖 建造者模式源碼 產品類 public class Product { public void

原创 23-享元模式

享元模式 一、定義 使用共享對象可有效的支持大量的細粒度的對象 要求細粒度對象,就會使得對象數量多而且性質相近,爲了區分,將對象分爲兩個部分:內部狀態與外部狀態 內部狀態,內部狀態是對象可共享出來的信息,存儲在享元對象內部並且不會

原创 Bitmap debug 時 預覽其圖片

1.首先找點Bitmap的變量,直接在變量出鼠標懸停或者,將Bitmap變量添加到watches裏,如下 2.找到Bitmap變量 右邊的 Viw BItmap,點擊此處即可預覽改Bitmap,如下

原创 14-適配器模式

適配器模式 一、定義 將一個類的接口變換爲客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作。 適配器模式又叫做變壓器模式,也叫做包裝模式(Wrapper) 適配器模式的類圖 Target是目

原创 04-抽象工廠模式

抽象工廠模式 一、定義 爲創建一組相關或相互依賴的對象提供一個接口,而且無需指定它們的具體類 抽象工廠方法的通用類圖如下 抽象工廠模式是工廠方法模式的升級版本,應用於多個業務品種、業務分類產生對象的情況。 下面爲通用源代碼類圖與

原创 20-訪問者模式

訪問者模式 一、定義 封裝一些作用於某種數據結構中的各元素的操作,它可以在不改變數據結構的前提下定義作用於這些元素的新的操作 通用類圖 Visitor是抽象訪問者,聲明訪問者可以訪問那些元素,在程序中visit方法的參數定義那些

原创 ConstraintLayout子View android:minHeight 無效解決

當父類是ConstraintLayout時 子view設置 android:layout_height="wrap_content" android:minHeight="40dp" 無效,疑似爲自定義View沒有做mi

原创 13-策略模式

策略模式 一、定義 定義一組算法,將每個算法搜封裝起來,並且使他們之間可以互換。 策略模式的通用類圖 Context是封裝角色,起承上啓下作用,屏蔽高層模塊對策略、算法的直接訪問,封裝可能存在的變化;Strategy是抽象策略角

原创 4.retrofit

簡單使用 新建接口,並用註解聲明請求 public interface GitHub { @GET("/repos/{owner}/{repo}/contributors") Call<List<Contributor>>

原创 簡單實現自定義橫向滾動選擇View優化

之前接到一個優化需求,ui嫌棄橫向滾動卡頓,提了優化需求,我發現自定義view是來自郭霖的簡單實現自定義橫向滾動的文章,未讀過的請看原文 現在發現的問題是 當前頁面設置了最多顯示3個,而原文只有滑動超過一個view的單位寬度時