如果你想系統掌握「完整 Android 開發知識體系」並達到高級 / 架構師級別,我可以幫你劃分出一個更完整的學習圖譜,包括:


一、基礎核心層(必須紮實)

✅ 目標:能寫出高質量、穩定、性能好的 App。

模塊

核心知識點

Kotlin 語言進階

高階函數、擴展函數、內聯函數、sealed class、協程(CoroutineScope / Flow)、泛型、委託、DSL

Android 四大組件

Activity / Fragment 生命週期、啓動模式、Intent、Service(前台 / 後台)、BroadcastReceiver、ContentProvider

UI 基礎

ConstraintLayout、FrameLayout、RecyclerView(多類型 / DiffUtil / Adapter)、ViewBinding / DataBinding

自定義 View / ViewGroup

onMeasure/onLayout/onDraw、觸摸事件分發、屬性動畫、自定義控件組合與複用

資源與適配

dp/sp/px 區別、屏幕適配(layout-swXXXdp)、深色模式、國際化(多語言)、字體與主題適配

多線程與異步

Handler、Looper、Executor、Coroutine、WorkManager、線程池優化


二、架構與模式層(進階重點)

✅ 目標:掌握結構化開發思維,方便擴展和維護。

模塊

核心知識點

MVVM + Jetpack

ViewModel、LiveData、StateFlow、DataStore、Lifecycle、Navigation、Room

依賴注入(DI)

Hilt / Dagger2、Koin、Service Locator 模式

模塊化與組件化

ARouter、模塊通信、gradle 多模塊結構

Jetpack Compose

Composable 基礎、State 管理、SideEffect、Compose 與 View 混用

設計模式實戰

單例、觀察者、命令、工廠、策略、適配器、裝飾器模式等在 Android 場景中的應用

數據層架構

Repository 模式、UseCase 層設計、接口抽象、數據源切換(本地 / 遠程)


⚙️ 三、系統與底層機制(進階深入)

✅ 目標:理解 Android 的運行原理,能定位複雜問題。

模塊

核心知識點

應用啓動流程

Zygote、AMS、PMS、Activity 啓動原理

Handler/Looper 原理

消息隊列機制、線程通信、主線程阻塞分析

Binder 與 IPC

AIDL、Messenger、ContentProvider、跨進程通信機制

內存管理

GC 原理、內存泄漏分析(LeakCanary)、Bitmap 優化、OOM 處理

性能優化

啓動優化、繪製優化、卡頓檢測(Choreographer / Trace)、內存 & 網絡性能分析

NDK / JNI

C/C++ 調用、Native 崩潰分析、性能關鍵點優化


四、網絡與數據層(實用必備)

模塊

核心知識點

網絡框架

Retrofit + OkHttp、攔截器、協程適配器、WebSocket、文件上傳下載

數據緩存

Room / DataStore / MMKV / SQLite、磁盤緩存策略、離線緩存同步

安全機制

HTTPS、簽名校驗、防止反編譯、加密存儲(AES / RSA)


五、UI/UX 與多媒體層

模塊

核心知識點

動畫與交互

MotionLayout、ViewPropertyAnimator、Lottie 動畫、幀動畫

圖片與視頻

Glide / Coil / Fresco / ExoPlayer、圖片壓縮與緩存策略

自定義控件實戰

Banner、九宮格、滑動卡片、錄音對話框、播放器控件等

Compose 動畫系統

rememberInfiniteTransition、LaunchedEffect、AnimatedVisibility


☁️ 六、高級工程實踐(架構師必備)

模塊

核心知識點

項目架構設計

Clean Architecture、MVI / MVVM、插件化(RePlugin、Small)

大型項目管理

Gradle DSL、依賴統一管理、Build Variants、多環境配置

AOP 與埋點

ASM / Javassist、日誌統計、用户行為追蹤

自動化測試

UnitTest、UI Test、MockK、Espresso

持續集成

GitHub Actions / Jenkins / Fastlane 打包自動化


七、生態與擴展

模塊

內容

Flutter / Compose Multiplatform

跨平台混合開發趨勢

React Native / H5 容器

Hybrid 技術與 WebView 優化

AI 與語音識別

ML Kit、OpenAI API、語音轉文字、TTS

可穿戴 / 車機 / TV / IoT

不同設備的 UI/UX 特性與適配


八、實戰路線建議(循序漸進)

階段

建議學習內容

初級(0~6個月)

Kotlin 基礎、四大組件、RecyclerView、自定義 View、網絡請求

中級(6~18個月)

MVVM + Flow + Jetpack + 協程、Room + Retrofit、模塊化、多語言、性能優化

高級(18~36個月)

Compose、Clean Architecture、插件化、AOP、性能與穩定性體系

架構師(36個月+)

系統原理、跨平台技術、CI/CD、框架設計與組件化生態


如果你希望我幫你:

  • 制定一份系統學習路線圖(含每階段目標 + 推薦 Demo + 練手項目)
  • 幫你評估你現在的水平並告訴你下一步該學什麼

我可以基於你目前掌握的內容(比如你現在非常熟悉 MVVM、協程、WebSocket、ViewBinding、自定義控件等)來定製一個「你接下來該突破的方向表」。

你希望我幫你做哪種?(✅路線圖規劃 / 能力評估與方向建議)

您説:

✅路線圖規劃 + 能力評估與方向建議

ChatGPT 説:

太好了 !這是最科學的方式 —— 我會先幫你做一次能力評估,再基於你的實際水平給出一份系統的、階段化的 Android 高級路線圖規劃


一、你的當前水平評估

根據你之前的提問記錄和項目內容,我判斷你的當前能力大致如下:

模塊

能力評估

説明

Kotlin 語言

✅ 高級

熟練掌握協程、Flow、Lambda、高階函數、委託屬性等。

Jetpack 架構

✅ 中高級

已熟練使用 ViewModel + Flow + MVVM 架構;懂生命週期感知、模塊通信。

UI 開發能力

✅ 中高級

精通 RecyclerView、自定義 View、ConstraintLayout、ViewBinding 等。

網絡與數據層

✅ 中高級

熟悉 Retrofit、WebSocket 管理、文件上傳下載。

多媒體開發

✅ 高級

封裝過 ExoPlayer、錄音模塊、音頻管理器等複雜邏輯。

模塊化 / 架構

⚙️ 中級

已使用 ARouter、LiveEventBus 等模塊通信,但 Clean Architecture 體系尚未完全體系化。

性能與系統機制

⚙️ 初中級

對 Handler / Binder / 啓動流程等底層機制理解有限,可進一步深入。

Compose / 新技術

⚙️ 入門

尚未看到實際 Compose 代碼,可安排專項突破。

工程化與發佈

⚙️ 中級

構建、多語言、打包基本掌握,但缺少 AOP、CI/CD、插件化經驗。

→ 綜合評級:中高級開發者(Level 3 / 5)

已能獨立開發完整模塊、編寫封裝良好的組件、優化代碼結構。
下一階段目標:向「Android 架構師」方向突破。


✅ 二、為你定製的「進階路線圖規劃」

我將路線圖分為 4 個階段(每階段約 3 個月),每個階段有:
學習重點、 推薦實踐項目、 學習目標。


階段 1:強化體系與架構思維(3 個月)

目標:從「能寫好功能」到「能設計結構」的轉變。

學習重點
  • MVVM → Clean Architecture:Repository + UseCase 層解耦
  • Jetpack 進階:Lifecycle、SavedStateHandle、Room、WorkManager
  • 模塊化與依賴管理:ARouter、gradle 多模塊結構
  • Flow 狀態流轉:UIState / UIEvent / UIEffect 模型化
  • Kotlin 技巧:DSL 構建器(例如自定義 View DSL)
實戰練習
  • 將你現有的語音錄製 + 播放模塊重構為「UseCase + Repository」架構
  • 寫一個「多模塊 MVVM Demo」,包含主頁、聊天、設置模塊的統一數據流
  • 封裝一個通用的 BaseViewModel + UiState 框架模板
學習成果

✅ 能獨立搭建企業級 MVVM 架構
✅ 掌握數據流與狀態驅動 UI
✅ 形成模塊邊界意識


階段 2:系統機制與性能優化(3 個月)

目標:理解 Android 運行原理,解決複雜性能問題。

學習重點
  • Handler、Looper、MessageQueue 源碼分析
  • Activity 啓動流程、AMS / PMS 原理
  • Binder 與 IPC 基礎
  • 內存優化:LeakCanary、Bitmap 優化、OOM 分析
  • 啓動優化 / 卡頓檢測(Choreographer、FrameMetrics)
  • ANR 與崩潰日誌分析
實戰練習
  • 編寫一個卡頓檢測工具(檢測主線程執行耗時)
  • 優化現有 App 啓動時間並記錄前後數據對比
  • 模擬多進程通信(AIDL / Messenger)
學習成果

✅ 能定位性能問題(內存 / 啓動 / 卡頓)
✅ 理解系統底層原理,為架構優化提供理論支撐


階段 3:Compose 與現代化開發(3 個月)

目標:掌握 Jetpack Compose + Kotlin 生態,提升 UI 生產力。

學習重點
  • Compose 基礎:State、remember、Effect、Layout 原理
  • Compose MVVM 實踐:ViewModel + StateFlow + Compose UI
  • Compose 動畫系統:AnimatedVisibility、Transitions
  • Material3 主題、暗色模式、可組合 UI
  • Compose + View 混用策略
實戰練習
  • 將現有 IM 頁面重構為 Compose 版本
  • 封裝一個通用的 VoiceRecordComposeView
  • 實現一個動畫豐富的「卡片滑動推薦」 Compose 界面
學習成果

✅ 掌握 Compose 全流程開發
✅ 能混合開發、設計現代化 UI
✅ 瞭解 Compose 性能優化與結構模式


階段 4:工程化與架構師突破(3~6 個月)

目標:具備獨立架構、優化、團隊協作設計的能力。

學習重點
  • CI/CD:GitHub Actions、Gradle Task 自動化構建
  • AOP 與埋點:ASM / Javassist、日誌切面、埋點 SDK 封裝
  • 插件化 / 組件化框架設計
  • 性能監控系統(內存、網絡、頁面加載)
  • 安全與加固:簽名校驗、防反編譯、AES/RSA 加密
  • NDK / JNI 入門(性能關鍵路徑優化)
實戰練習
  • 為現有 App 編寫 CI 自動打包 + 多環境配置腳本
  • 編寫一個「AOP 日誌埋點框架」並應用到項目中
  • 構建一個「模塊動態加載插件 Demo」
學習成果

✅ 架構師級別的系統設計能力
✅ 掌握企業級工程化實踐
✅ 能主導中大型項目架構演進


三、建議學習節奏(按周規劃)

時間段

每週學習方向

週一~三

深入閲讀源碼 / 理論部分(Jetpack、系統機制)

週四~五

編寫實戰 Demo(帶驗證與重構)

週六

學習 Compose / 新技術

週日

總結 + 輸出(寫文檔、筆記、博客)


四、個性化延伸建議

基於你當前的優勢(UI 封裝、自定義組件、MVVM 架構):

方向

適合你發展的路線

UI 體系工程師

Compose / MotionLayout / 自定義動畫控件體系

⚙️ 架構方向

Clean Architecture、模塊化、AOP、CI/CD

多媒體方向

音視頻處理、ExoPlayer + NDK 優化、實時通信(RTC)

跨平台方向

Compose Multiplatform / Flutter 混合開發


如果你希望我接下來幫你輸出一份:

「階段 1」的詳細學習計劃(含每日任務 + 推薦視頻/文檔 + 練手 Demo)

我可以立刻為你生成「第 1 階段 - Clean Architecture 實戰路線表(含代碼模板)」,
幫助你從現有 MVVM 架構,過渡到完整的分層架構。

是否幫你生成?(✅ 是的,生成階段 1 學習計劃)

您説:

ChatGPT 説:

太棒了 !你正式進入「高級 Android 架構師成長路線」的第 1 階段 ——
強化體系與架構思維(Clean Architecture 實戰)

下面是我為你定製的完整學習計劃 ,分為:
1️⃣ 階段目標
2️⃣ 知識體系圖
3️⃣ 4 周學習計劃(含每日任務)
4️⃣ 實戰項目建議
5️⃣ 推薦資料與資源


階段 1:強化體系與架構思維(為期 4 周)

目標

從 “寫模塊” → “設計架構”。
你將掌握 Clean Architecture 的思維方式,能獨立設計 MVVM + UseCase + Repository 的分層結構,打造企業級架構模板。


一、Clean Architecture 思維結構圖

UI 層(View / Compose)    ↓ 事件、狀態 ViewModel 層(State + Event + Effect)    ↓ 調用 UseCase ⚙️ Domain 層(UseCase)    ↓ 訪問數據接口 Data 層(Repository + DataSource)    ↙️ 本地 LocalDataSource(Room / MMKV)    ↘️ 網絡 RemoteDataSource(Retrofit / WebSocket)

關鍵原則:

  • ViewModel 不直接依賴 Data 層,只依賴 UseCase(接口)
  • UseCase 只做單一業務邏輯
  • Repository 負責數據源合併(網絡 + 本地)
  • 各層通信通過 Kotlin 協程 + Flow
  • 數據流單向:UI → VM → UseCase → Repo → 迴流至 UI

二、4 周學習計劃(含每日任務)

第 1 周:架構基礎與 Kotlin 強化

理解分層思想 + Kotlin 能力打牢

日期

學習任務

週一

閲讀《Clean Architecture 原則》概要(理解 Domain / Data / UI 分離)

週二

Kotlin 高級語法複習:sealed class、Flow、inline、crossinline

週三

理解「單向數據流(UDF)」:UIState / UIEvent / UIEffect 模型

週四

實戰:封裝 BaseViewModel<State, Event, Effect> 基類

週五

實戰:創建 UiState 管理類,配合 StateFlow 驅動 UI

週末

項目練習:把你一箇舊頁面改造成 UDF 架構(比如錄音界面)


第 2 周:Repository + UseCase 分層實踐

將 ViewModel 邏輯下沉為業務用例(UseCase)

日期

學習任務

週一

理解 UseCase 概念:單一職責、依賴倒置

週二

實戰:編寫 GetUserInfoUseCaseUpdateUserInfoUseCase

週三

封裝 Repository 接口與實現類(含本地與遠程數據源)

週四

編寫 LocalDataSource(Room / MMKV)

週五

編寫 RemoteDataSource(Retrofit + Coroutine)

週末

實戰整合:實現一個 “用户資料中心” 模塊(含離線緩存)


第 3 周:模塊化與依賴管理

將架構結構擴展到多模塊項目,掌握依賴注入思想。

日期

學習任務

週一

Gradle 多模塊結構講解(app / core / feature / data)

週二

學習 Hilt(依賴注入)與 Repository 注入實踐

週三

拆分 “網絡模塊” 與 “本地存儲模塊”

週四

使用 Hilt 綁定 Repository 實現到接口

週五

編寫一個跨模塊的 UseCase(比如 UploadVoiceUseCase)

週末

練習:將語音錄製模塊改造成獨立 feature module,可獨立注入使用


第 4 周:統一 UI 架構與可複用模板

打造自己的「架構腳手架」。

日期

學習任務

週一

整理項目結構與包命名規範(domain/data/ui)

週二

封裝通用的 BaseRepositoryResult(Success/Error/Loading)模型

週三

擴展 BaseViewModel 支持加載狀態、錯誤捕獲、重試機制

週四

創建模板工程腳本(通過 Gradle 自動生成新模塊結構)

週五

優化 UIState 模型,支持多頁面複用

週末

實戰項目驗收:創建完整模塊(錄音上傳 + 播放 + 狀態流 + Repository)


三、實戰項目建議

項目名稱

實戰目標

VoiceManager Clean Demo

把之前的語音錄製模塊完全重構成 Clean 架構:UI → ViewModel → UseCase → Repository。

IM Session 模塊重構

對聊天列表模塊實現 UseCase 分層,Room 緩存 + WebSocket 同步。

Media Gallery 模塊

拆分數據源(本地圖庫 + 網絡資源),展示圖片加載優化。

每個模塊最後都形成:

domain/     usecase/ data/     repository/     datasource/ ui/     viewmodel/     activity/


四、推薦學習資料

類型

名稱

説明

官方文檔

Guide to app architecture (Google)

官方架構最佳實踐

教程

「Android Clean Architecture with Kotlin」by MindOrks

實戰導向的 Clean 架構入門

視頻

Philipp Lackner - Clean Architecture 系列(YouTube)

講解清晰、含 Flow + Hilt

源碼

nowinandroid (Google 官方 App)

最完整的 Clean + Compose 實踐

文章

Medium: "Why UseCase is key in MVVM"

深入理解 UseCase 在大型項目的作用


階段完成標誌

完成以下 3 項後,你將順利晉升到「架構中級」階段:

  1. 擁有可複用的 BaseViewModel + UIState 模板
  2. 任意模塊(如語音錄製、聊天列表)實現完整的 Clean 架構
  3. 能清晰畫出項目層次依賴圖並獨立設計新的模塊結構

我接下來可以幫你生成:

  • 第 1 周「架構基礎 + BaseViewModel + UIState 實戰模板」的完整代碼 Demo
  • 包含:BaseViewModelUiStateUiEventUiEffectViewModel 使用樣例

是否要我直接生成?(✅ 是的,生成第 1 周完整 Demo 模板)

您説:

ChatGPT 説:

太好了
我們現在正式進入 階段 1·第 1 周:架構基礎 + BaseViewModel + UIState 實戰模板

這一週的目標是構建一個能在任意項目中通用的「基礎架構骨架」:

MVVM + UDF 單向數據流模式(State/Event/Effect)
讓你的 ViewModel 層結構化、可維護、可複用。


一、結構預覽

我們先建立以下包結構(推薦):

base/  ├─ state/        # 狀態定義(State, Event, Effect)  ├─ viewmodel/    # 通用 BaseViewModel  └─ utils/        # 擴展工具類


二、核心概念複習

名稱

作用

舉例

UiState

描述當前界面狀態(數據類)

當前錄音時長、播放狀態等

UiEvent

來自用户的操作事件

點擊按鈕、滑動、刪除等

UiEffect

一次性副作用事件

Toast、導航、彈窗等

BaseViewModel

管理 State、處理 Event、發送 Effect

負責業務邏輯和狀態流轉


⚙️ 三、完整代碼模板

1️⃣ UiState.kt

package com.hatio.base.state
/**
 * UI 層狀態基類
 * 所有頁面狀態都應繼承自 UiState
 */
interface UiState

2️⃣ UiEvent.kt

package com.hatio.base.state
/**
 * 用户事件:點擊、輸入、滑動等交互操作
 */
interface UiEvent

3️⃣ UiEffect.kt

package com.hatio.base.state
/**
 * 一次性副作用事件:Toast、導航、彈窗等
 */
interface UiEffect

4️⃣ BaseViewModel.kt

package com.hatio.base.viewmodel
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.hatio.base.state.UiEffect
import com.hatio.base.state.UiEvent
import com.hatio.base.state.UiState
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.launch
/**
 * 通用的 BaseViewModel
 * 使用 StateFlow 管理 UI 狀態,Channel 發送一次性事件
 */
abstract class BaseViewModel : ViewModel() {
    // UI 狀態流
    private val _uiState: MutableStateFlow by lazy { MutableStateFlow(initialState()) }
    val uiState: StateFlow = _uiState.asStateFlow()
    // 一次性事件通道(如 Toast / 導航)
    private val _uiEffect = Channel(Channel.BUFFERED)
    val uiEffect = _uiEffect.receiveAsFlow()
    // 初始化默認狀態
    abstract fun initialState(): S
    // 更新狀態:局部更新(不可變數據拷貝)
    protected fun setState(reducer: S.() -> S) {
        _uiState.value = _uiState.value.reducer()
    }
    // 發送副作用事件(一次性)
    protected fun sendEffect(builder: () -> F) {
        viewModelScope.launch { _uiEffect.send(builder()) }
    }
    // 處理用户事件
    abstract fun handleEvent(event: E)
}

到這裏你已經擁有了一個 完全可複用的 UDF 架構模板

模塊

文件

功能

base/state

UiState, UiEvent, UiEffect

定義三種層次數據流

base/viewmodel

BaseViewModel

統一管理 StateFlow + Effect

feature/voice

VoiceViewModel + 狀態類

業務邏輯示例

ChatGPT 説:

是否希望我接下來直接生成「第 2 周:Repository + UseCase 架構模板與 Demo(含網絡與本地數據源)」?

您説:

是,希望

ChatGPT 説:

太棒了 ✅ Jeled!這一步正是從「寫功能」→「寫架構」的關鍵轉折。
我們馬上進入你計劃的下一篇實戰內容:


第 2 周實戰主題

Repository + UseCase 架構模板與 Demo

目標:實現一個可擴展、可測試、支持網絡與本地數據源共存的 Repository 層,並結合 UseCase 規範業務邏輯。


️ 一、項目架構圖

app/  ├── data/  │    ├── local/         ← Room / DataStore / MMKV  │    ├── remote/        ← Retrofit / OkHttp  │    ├── repository/    ← 數據聚合層(核心)  │    └── model/         ← DTO + Entity  │  ├── domain/  │    ├── model/         ← 業務模型(UI 層使用)  │    └── usecase/       ← 用例邏輯(UseCase)  │  ├── ui/  │    ├── viewmodel/     ← ViewModel 調用 UseCase  │    └── screen/        ← Compose / Fragment / Activity  │  └── di/                 ← Hilt 模塊


二、架構理念

層級

職責

示例

RemoteDataSource

負責網絡請求

Retrofit 調用

LocalDataSource

負責本地緩存

Room / MMKV

Repository

聚合數據源,隱藏數據實現細節

從緩存或網絡讀取

UseCase

業務邏輯抽象(單一職責)

GetUserProfileUseCase

ViewModel

控制 UI 狀態

調用 UseCase 並暴露 StateFlow


三、核心示例:獲取用户資料(含本地緩存 + 網絡回源)

1️⃣ RemoteDataSource.kt

class UserRemoteDataSource @Inject constructor(
    private val api: UserApi
) {
    suspend fun fetchUser(userId: String): ApiResult {
        return try {
            val response = api.getUser(userId)
            ApiResult.Success(response)
        } catch (e: Exception) {
            ApiResult.Error(e)
        }
    }
}

2️⃣ LocalDataSource.kt

class UserLocalDataSource @Inject constructor(
    private val dao: UserDao
) {
    suspend fun getUser(userId: String): UserEntity? = dao.getUserById(userId)
    suspend fun saveUser(user: UserEntity) {
        dao.insert(user)
    }
}

3️⃣ Repository.kt

class UserRepository @Inject constructor(
    private val local: UserLocalDataSource,
    private val remote: UserRemoteDataSource
) {
    suspend fun getUser(userId: String): Flow> = flow {
        emit(Resource.Loading)
        // 優先讀取本地緩存
        local.getUser(userId)?.let { localUser ->
            emit(Resource.Success(localUser.toDomain()))
        }
        // 同步遠程數據
        when (val result = remote.fetchUser(userId)) {
            is ApiResult.Success -> {
                val entity = result.data.toEntity()
                local.saveUser(entity)
                emit(Resource.Success(entity.toDomain()))
            }
            is ApiResult.Error -> emit(Resource.Error(result.exception))
        }
    }
}

4️⃣ UseCase.kt

class GetUserProfileUseCase @Inject constructor(
    private val repository: UserRepository
) {
    operator fun invoke(userId: String): Flow> {
        return repository.getUser(userId)
    }
}

5️⃣ ViewModel.kt

@HiltViewModel
class UserViewModel @Inject constructor(
    private val getUserProfileUseCase: GetUserProfileUseCase
) : ViewModel() {
    private val _userState = MutableStateFlow>(Resource.Loading)
    val userState: StateFlow> = _userState.asStateFlow()
    fun loadUser(userId: String) {
        viewModelScope.launch {
            getUserProfileUseCase(userId).collect { result ->
                _userState.value = result
            }
        }
    }
}

6️⃣ UI 示例(Compose)

@Composable
fun UserScreen(viewModel: UserViewModel = hiltViewModel()) {
    val state by viewModel.userState.collectAsState()
    when (state) {
        is Resource.Loading -> CircularProgressIndicator()
        is Resource.Success -> {
            val user = (state as Resource.Success).data
            Text("Hello, ${user.name}")
        }
        is Resource.Error -> Text("加載失敗: ${(state as Resource.Error).throwable.message}")
    }
}

⚙️ 四、輔助類定義

// Resource.kt
sealed class Resource {
    object Loading : Resource()
    data class Success(val data: T) : Resource()
    data class Error(val throwable: Throwable) : Resource()
}
// ApiResult.kt
sealed class ApiResult {
    data class Success(val data: T) : ApiResult()
    data class Error(val exception: Exception) : ApiResult()
}

五、擴展與思考

  • ✅ 可添加 刷新策略(如 CachePolicy)
  • ✅ 支持 分頁加載(Paging3)
  • ✅ 結合 Room + Flow 實現實時數據更新
  • ✅ 與 Hilt 結合實現模塊化依賴注入

六、實踐任務

周目標

説明

第 2 周

基於上面模板實現一個「用户資料模塊」Demo(含 Repository + UseCase + Flow)

擴展任務

再實現一個「消息列表模塊」,演示分頁 + 緩存策略

加分項

使用 Hilt 完成依賴注入 + 添加單元測試

ChatGPT 説:

是否希望我接下來直接生成「第 3 周:模塊化與依賴管理」?
✅ 是的,繼續下一階段
暫時不用,先鞏固第 2 周

您説:
暫時不用,先鞏固第 2 周