Taste of Android Architecture Patterns
(17 March 2020)
အခုရက်ပိုင်း ကျနော် Android Application Architecture နဲ့ပတ်သက်ပြီး လေ့လာဖြစ်တယ်
Sample Source Code အနေနဲ့ အဓိက ဖတ်ဖြစ်တာတော့ Google ကနေ Open Source လုပ်ပေးထားတဲ့ Githubမှာရှိတဲ့ Architecture Samples ဆိုတဲ့ Todo Appလေးကိုပါ။ သူ့မှာ Android App Architecture အားလုံးအတွက် Implementations တွေအားလုံးကို Branch လေးတွေ ခွဲပေးထားတယ်။ Contributerတွေလဲအစုံပါပဲ။
အဲ့ထဲမှာ သဘောကျဆုံးက UseCase ဆိုတဲ့ Branch။ Presentation Layer ကို MVVM နဲ့သုံးထားတယ်။
Presentation Layer မှာရှိတဲ့ View နဲ့ ViewModel တို့ Loosely Coupleဖြစ်အောင်ချိတ်ထားတဲ့အပိုင်းကို အရမ်းသဘောကျတယ်။
အဲ့မှာ Viewအတွက် Fragment ကို အဓိက သုံးထားတယ်။
ကျနော်တို့ အခါတိုင်းလိုရေးဖြစ်ကြတာက Fragment Navigator ကို ViewModel ထဲကို ထည့်လိုက်ကြတာ။ တခြားPage တစ်ခုပြောင်းရမယ်ဆို Fragment အထိသွားစရာမလိုပဲ ViewModelမှာပဲရှင်းမယ် ဆိုတဲ့သဘောပေါ့။
အဲ့လိုထည့်တာ Designပိုင်း မကောင်းနိုင်တော့ဘူး။ တခြား Fragment သို့ View တစ်ခုအတွက် သုံးမယ်ဆိုရင် တိုင်ပတ်တော့မယ်။ အဲ့ ViewModel က Resuable မဖြစ်တော့ဘူး။
Sample ထဲမှာကျ အဲ့လို Concern တွေ မရှုပ်အောင်၊ Fragment ဘက်မှာ လုပ်ရမယ့် Android Framework ကိစ္စတွေကို Event တွေနဲ့ ခွဲထားလိုက်တယ်။
ViewModel ဆီက Event Callback တွေကို Fragmentမှာ LiveData အနေနဲ့လက်ခံပြီး Observe လုပ်ထားတယ်။ ViewModelဘက်မှာ ကိစ္စတစ်ခုရှိရင် အဲ့LiveData ကိုပဲ PostValue နဲ့ပို့ပေါ့။ Event တွေ နှစ်ခါထပ်မဖြစ်အောင် EventObserver ကို Sample Appထဲမှာ သက်သက်ရေးထားတယ်။
Fragment ဘက်ကလာတဲ့ User Eventတွေကို ViewModel ဘက်ကို One Direction အနေနဲ့သွားတယ်။ LiveData ဘာတို့ return အနေနဲ့ပြန်မယူဘူး။
အဲ့လိုဆိုတော့ အရမ်းSmoothဖြစ်တယ်။ Fragment ဘက်နေ ViewModel ဘက်မှာရှိတဲ့ UI event function ကို invoke လုပ်ရုံပဲ။ void ကိုပဲ returnပြန်ယူတယ်။
ViewModelဘက်ကျတော့လဲ Fragmentဆီပို့ရမဲ့ Event သို့ Data ကို LiveData မှာ PostValue လုပ်ပြီး ပို့ရုံပဲ။ အရမ်းSmartကျတယ်။
စိတ်ဝင်စားလို့ လေ့လာချင်ရင်တော့ အောက်မှာ Github Link ပေးထားပါတယ်။ ဆြာသက်ခိုင်ရဲ့ Android Architecture Patterns ဆိုတဲ့ Talkကိုလဲ နားထောင်ကြည့်ဖို့ Recommendပေးပါတယ်။ အဲTalk မှာ Android App အတွက် Architectureတွေ အကြောင်းနားထောင်လို့ရပါတယ်။
😋
Android Architecture Samples (ToDo App)
https://github.com/android/architecture-samples
Sir Thet Khine’s Android Architecture Patterns Talk