好啦,來說一下這個的重點,
簡單說,這個App的源碼,可以當作一個Google本身對現代Android App的建議的具體呈現,所以如果想做類似功能或架構可參考這支App的源碼,當成小說看看也不錯 (喂~誰看的下去)
架構部分
- Presentation Layer,邏輯確實從View(Activity/Frgamnet)移開到ViewModel,然後使用LiveData跟Data Binding關聯資料跟UI。
- Data Layer,有Repository 處理全部的資料邏輯,處理來自不同來源的資料,包括從Firestore來的使用者資料,跟從SharedPreferences來的偏好設定資料。
- 兩層中間還有一個Domain Layer,負責分派不同的工作邏輯處理
- 用了Dagger2處理dependancy injection,用了Esspreso處理instrumentation test,用了 JUnit 和 Mockito 處理unit test。
Firebase部分,這支App用到以下:
- Firestore:處理user data,會做同步跟快取。
- Functions: 用來跑backend code。預訂功能靠Functions去檢查使用者狀態跟空位,及在Firestore上做預訂。
- FCM:通知App Conference資料變更用,用了ping-and-fetch model。
- Remote Config:用來更新跟Conference資料無直接關係的資料,像是Wifi跟接駁車。(這個居然有這種用法...)
用了Kotlin+KTX寫。
用了很多Material Design元件,只是來不及用完整的Material Theming。
之後可能還會加上JetPack,當作安卓模範生展示 XD
專案GitHub在此。
Hey,看看這些你有多少還沒用呢?