原创 Android Activity Scenario總結 Android Activity Scenario總結

Android Activity Scenario總結 Activity Scenario參考文檔 概述 Activity Scenario是AndroidX提供的最新的跨平臺測試框架。 它需要結合LifeCycle的State與Eve

原创 重構:讀書筆記

重構讀書筆記 第一章 重構,第一個案例 第二章 重構原則 2.1 何爲重構 重構(名詞):對軟件內部結構的一種調整,目的是在不改變軟件可觀察行爲的前提下,提高其可理解性,降低其修改成本。 重構(動詞):使用一系列的重構手法,在不改變軟件可

原创 CleanCode代碼整潔之道:讀書筆記

Clean Code讀書筆記 第一章 整潔代碼 什麼是整潔代碼 代碼邏輯直截了當 儘量較少依賴關係,使之便於維護 分層戰略完善錯誤代碼 性能調製最優 整潔代碼只做一件事 --- Bjarne C++發明者 破窗理論 可讀性:整潔

原创 字符編碼解碼總結 字符編碼解碼總結

字符編碼解碼總結 前言 字符編碼解碼這個問題一直困擾着諸多的程序開發者,可能也查閱過不少資料,可在實際編碼工作中對於一些問題還是一知半解。 例如筆者在最初學習時,知道編碼是將字符轉換爲二進制碼,但似乎由覺得Unicode也是碼,可資料又說在

原创 測試驅動開發總結

第25章 壓力循環 壓力越大、測試越少。測試越少,錯誤越多。錯誤越多,壓力越大 壓力越大、自動測試越多。自動測試越多、錯誤越少。錯誤越少,壓力越小。 測試應在在編寫代碼之前編寫。 相互獨立的測試 測試用例要迅速 測試用例要獨立 測試

原创 字符編碼解碼總結

字符編碼解碼總結 前言 字符編碼解碼這個問題一直困擾着諸多的程序開發者,可能也查閱過不少資料,可在實際編碼工作中對於一些問題還是一知半解。 例如筆者在最初學習時,知道編碼是將字符轉換爲二進制碼,但似乎由覺得Unicode也是碼,可資料又說在

原创 Android新增Flavor與模塊化

Android Flavor 爲了支持同一套代碼能夠生成多個版本的應用,Android提供flavor來實現該需求。 Flavor使用 在模塊化中新增Flavor 在單一模塊的工程中,新增Flavor很簡單,但是在多模塊的工程中,可能會有諸

原创 UML類圖

UML主要有6種關係: 依賴(Dependency) 常見的場景:方法參數,局部變量,靜態方法調用。 特點:最弱的關係。 關聯(Association) 常見的場景:類對象持有另一個類的對象,作爲成員變量 聚合(Aggregation)

原创 Kotlin與Java:this關鍵字

前言 面向對象的語言中大多有關鍵字this,用於表示對象本身。但不同語言對於其支持的用法不盡相同。 Java 根據《Thinking in Java》中提到的,Java中關於this的用法主要就是三種: this用於傳遞當前對象 this

原创 Kotlin與Java:空安全

前言 空指針異常(NPE)是最爲普遍與常見的異常,同時它也會引起諸如程序崩潰等非常嚴重的後果。爲了避免出現NPE,常常需要開發者對變量進行判空處理。特別是在Android中常常會使用‘鏈式’調用,但爲了避免NPE,需要‘步步’判空,使得程序

原创 安卓gradle配置總結

前言 安卓工程通過gradle進行構建,爲此瞭解安卓中的gradle十分重要。 文件結構 工程中有一個setting.gradle文件 工程中有一個build.gradle文件 每一個模塊(如app)中有一個build.gradle文件

原创 gradle基礎總結

前言 Gradle基於Groovy語言,採用DSL的構建工具。gradle腳本中可以包含Groovy的任何元素。 架構 Gradle結構與任務圍繞着兩個額概念: project: 每一個構建都圍繞着一個或多個project。project

原创 安卓無法調用模塊aar中的依賴問題

問題背景 模塊化在安卓開發中應用廣泛,開發者可以將自己工程中的模塊編譯成aar提供給其他工程使用,也可以使用其他工程提供的模塊aar. 但是這些aar可能有自己的依賴(如jar包)等。當外部工程在依賴aar時,可能無法依賴到aar的依賴。

原创 Kotlin與Java:解構聲明

解構聲明 在現代語言中常常擁有結構聲明用語簡化代碼,例如JavaScript與Kotlin,但是在Java中卻沒有此特性。爲此下文以Kotlin作爲例子: // 解構聲明 val (name, age) = person // 使用解構聲明

原创 加載so異常總結:System.loadLibrary

安卓開發中可能會遇到加載so的場景,但可能會遇到加載異常的情況。筆者對自己遇到的此類情況稍作總結。 問題背景 有一段網絡請求的業務代碼原本是在一個應用中的,爲了實現複用,將這段業務代碼封裝成一個模塊(module),然後編譯成aar給另一個