AndroidXʹજΉศརͦ͏ͳϠπΒ@takuji31Mobile Act KYOTO #1
View Slide
ࣗݾհ
ࣗݾհ• @takuji31 id:takuji31• Takuji Nishibayashi• Hatena Co., Ltd.• App Team• ίϛοΫDAYS• δϟϯϓϧʔΩʔʂ• ΧΫϤϜ
ࣗݾհ• Android• Kotlin• Flu-er•!h-ps://blog.takuji31.jp•"h-ps://nazuna.takuji31.jp•# $h-ps://photo.takuji31.jp
AndroidX
LiveData?ViewModel?AppCompat?Naviga5on
ͬͯ·͢ΑͶ
ศརͳͭ৭ʑհ͠·͢
α൛ͷͷؚ·ΕΔͷͰ͝ར༻ܭըతʹ
ଞʹ͍͍ͷ͋ͬͨΒڭ͍͑ͯͩ͘͞ʂ
androidx.ac*vityandroidx.fragment
ComponentActivity.viewModels{}Fragment.viewModels{}Fragment.activityViewModels{}
ViewModelΛऔಘͰ͖ΔDelegated property
viewModels ҾͰViewModelStoreOwnerΛ୳͢blockΛͤΔ
valʹͰ͖Δ
Goodbye!private lateinit var
@ContentView
ComponentAc*vity ͱ Fragmentʹsecondory constructor͕Ճ
constructorͷҾʹLayoutͷIDΛͤΔ
Goodbye setContentView()
DataBindingbind͢ΕΑͦ͞͏
androidx.lifecycle
ViewModelͱ͔LiveDataͱ͔ೖͬͯΔΞϨ
ViewModel.viewModelScope
ViewModelͷCorou,neScope
ContextDispatchers.Main + Job
onCleared() ͰΩϟϯηϧ
Saved State
ViewModelը໘ճసΛੜ͖Δ
Ac#vity͕ϝϞϦʔ͔Βഁغ͞ΕΔ࣌ࢮ͵
SavedStateHandlerͰঢ়ଶΛ෮ݩͰ͖Δ
γϯϓϧͳset/get/remove/contains
getLiveData()
see. h&ps://developer.android.com/topic/libraries/architecture/viewmodel-savedstate
androidx.navigation
Naviga&onͷΞϨ
androidx.navigation.safeargsandroidx.navigation.safeargs.kotlin
Naviga&onͷxmlʹఆٛͨ͠ભҠઌͷargsΛࣗಈੜ
KotlinίʔυੜՄೳ
Goodbye createIntent()methods!
Naviga&onͰը໘ભҠ͠ͳͯ͑͘Δ
·ͣͬͯΈͯʂ
Fragment.navGraphViewModels()
ࢦఆͨ͠Naviga&onͷgraphͰੜ͖ΔFragment
NavHostFragmentͷFragmentͰ͏ɺΈ͍ͨͳײ͡ͷ࣌ʹ͑ͦ͏
͜Εॻ͍ͯͯࠓ࣮ͯ͠Δը໘Ͱ͑ͦ͏ͱࢥͬͨͷͰ͏༧ఆ
h"ps://developer.android.com/jetpack/androidx