Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Android Architecture Componentsをメルカリ カウルに入れてみた話
Search
protosd
November 22, 2017
1
820
Android Architecture Componentsをメルカリ カウルに入れてみた話
protosd
November 22, 2017
Tweet
Share
More Decks by protosd
See All by protosd
裏から見た表のカウル
protosdhk
0
1.8k
Featured
See All Featured
Code Review Best Practice
trishagee
70
19k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
GraphQLの誤解/rethinking-graphql
sonatard
72
11k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Why Our Code Smells
bkeepers
PRO
339
57k
Transcript
Android Architecture Components ΛϝϧΧϦ ΧϧʹೖΕͯΈͨ גࣜձࣾικՖ഼
Souzoh confidential and proprietary ࣗݾհ w ໊લՖ഼ ͨʹΌΜ w
৬छ"OESPJEΤϯδχΞܾಆऀ w ॴଐϝϧΧϦικ w (JUΞΧϯτQSPUPTEIL 2
Souzoh confidential and proprietary 3
Souzoh confidential and proprietary Android Architecture Components 4
Souzoh confidential and proprietary Android Architecture Components 5 • Lifecycle
Activity/Fragmentͱಉظͯ͠ঢ়ଶ͝ͱʹॲཧΛࠩ͠ࠐΊΔ • LiveData Activity/Fragment ͕ੜଘ͍ͯ͠Δ߹ʹͷΈσʔλΛྲྀͯ͘͠ΕΔ • ViewModel ը໘ճస࣌ʹActivity/Fragment ͕࠶ੜ͞ΕͯσʔλΛҾ͖ܧ͛Δ • Room SQLite ͷ Object Mapper
Souzoh confidential and proprietary ϝϧΧϦΧϧͷߏ 6 w .71 w 3Y+BWB
Activity / Fragment Presenter onCreate onDestroy Viewͷొ CompositeDisposable.add CompositeDisposable.dispose Viewͷදࣔ etc
Souzoh confidential and proprietary Lifecycle 7
Souzoh confidential and proprietary Lifecycle 8 w 1SFTFOUFSͷվम w "DUJWJUZ'SBHNFOUͷվम
Souzoh confidential and proprietary Lifecycle 9 w ಋೖʹ͓͚ΔϝϦοτ w .71Ͱಉ͡Α͏ͳׂΛ࣋ͭ1SFTFOUFS͕طʹଘࡏ͍ͯ͠ΔͷͰมߋ͕؆୯
w ຖճϥΠϑαΠΫϧܥͷϝιουͰ1SFTFOUFSΛݺͼग़͢ॲཧ͔Β։์ w ؾΛ͚͍ͭͨϙΠϯτ w 'SBHNFOU"DUJWJUZͱ1SFTFOUFSʹը໘ͷঢ়ଶύϥϝʔλ͕ࢄͯ͠͠·͍ͬͯ Δ߹ͳͲ7JFX㱻1SFTFOUFSؒͷແବͳΓऔΓ͕૿͑Δ w 1SFTFOUFSʹدͤΔɺํ͔ΒΞΫηεͰ͖Δ4UBUFΫϥεΛ͓͍࣋ͬͯͨ΄͏͕ ྑ͍͔
Souzoh confidential and proprietary LiveData 10
Souzoh confidential and proprietary LiveData 11 w ϝϧΧϦɹΧϧͰΞϓϦશମʹσʔλΛͨ͢Ίʹ 1VCMJTI4VCKFDU#FIBWJPS4VCKFDUΛ࣮ 1SFTFOUFSͰߪಡొΛ͍ͯ͠Δ
ɾ֤ηϧʹ͍͍ͭͯΔ-JLF6O-JLFϘλϯ ɾͷຊ୨ͷՃॲཧ ɾӾཡཤྺͷߋ৽ॲཧ ɾϐοΫΞοϓͷՃ → LiveDataʹஔ͖͑
Souzoh confidential and proprietary LiveData 12 w 1VCMJTI4VCKFDU#FIBWJPS4VCKFDUʹมΘΔ.VUBCMF-JWF%BUBΛੜ w 1SFTFOUFSʹߪಡॲཧΛՃ
Souzoh confidential and proprietary LiveData 13 w ಋೖʹ͓͚ΔϝϦοτ w ֤ը໘Ͱશମ௨ܥͷ$PNQPTJUF%JTQPTBCMFEJTQPTF͕ෆཁʹ
w ؾΛ͚͍ͭͨϙΠϯτ w 1SFTFOUFSͰར༻͢Δ߹-JGFDZDMF0XOFSΛ͓ͯ͘͠ඞཁ͕͋Δ w ༷ʑͳը໘Ͱ͞ΕΔ1VCMJTI4VCKFDU#FIBWJPS4VCKFDUΛஔ͖͑Δ ͷख͔ؒͳ͋ ແཧͯ͠ஔ͖͑ͳͯ͘ྑ͍͔Εͳ͍
Souzoh confidential and proprietary ViewModel 14
Souzoh confidential and proprietary ViewModel 15 w ϝϧΧϦΧϧॎը໘Λલఏʹ࣮͞Ε͍ͯΔ w ग़ը໘ͷύϥϝʔλೖྗɺ࿈ଓεΩϟϯը໘ͳͲͷը໘ભҠΛ
લఏͱͨ͠ϨΠΞτͷͨΊTBWFE*OTUBODF4UBUFΛར༻ w ແݶεΫϩʔϧͷ7JFX1BHFSΛ࣋ͭϥϯΩϯάը໘ͳͲͰҰ දࣔͨ͠λϒͷใΛϝϞϦΩϟογϡ͍ͯ͠Δ → ViewModelʹஔ͖͑ → ViewModelʹஔ͖͑Ͱ͖ͦ͏
Souzoh confidential and proprietary ViewModel 16 w ಉҰͷ7JFX.PEFMͰLFZͰෳੜՄೳ ͷ'SBHNFOUʹඥ͚Δ͜ͱͰແݶ7JFX1BHFS ݫີʹผͷ
'SBHNFOU ͰҎલͷը໘ঢ়ଶΛҾ͖ग़ͤΔ
Souzoh confidential and proprietary ViewModel 17 w ಋೖʹ͓͚ΔϝϦοτ w 7JFXͷॳظԽɺݺͼग़͠ॲཧΛ*OTUBODF4UBUFܥͷϝιουʹࢄͤ͞
Δඞཁ͕ͳ͘ͳΓίʔυ͕·ͱ·ͬͨ w ؾΛ͚͍ͭͨϙΠϯτ w 7JFX.PEFMͷதʹ৭ʑೖΕΔ͜ͱ͕Ͱ͖Δ͕ɺԿΛೖΕ͓ͯ͘ͷ͔ ໌֬ʹ͓ͯ͘͜͠ͱ͕େࣄ
Souzoh confidential and proprietary ·ͱΊ 18 • ϝϧΧϦ ΧϧͰҰ෦ػೳΛLifecycle,LiveData,ViewModelͰ࡞ •
ͱͱͷߏ͕Lifecycleʹ͍ͦͬͯͨ͜ͱ͋Γɺಋೖ؆୯ͩͬͨ • RxJava2Ͱ݁Ͱ͖͍ͯΔ෦Λࠩ͠ସ͑Δͷ͋·Γࢫຯ͕ͳ͍
Souzoh confidential and proprietary ࠷ޙʹ 19 ※ٕज़ॻͳͷʹԆʑͱΞχϝιϯάʹ͍ͭͯ͘ޠ͍ͬͯΔͷίʔφʔ͕͓͢͢ΊͰ͢ ϝϧΧϦ ΧϧͰಉਓຊΛग़͠·ͨ͠
Souzoh confidential and proprietary ͋Γ͕ͱ͏͍͟͝·ͨ͠ 20