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
ViewModel SavedState
Search
slme
July 18, 2020
Technology
150
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ViewModel SavedState
slme
July 18, 2020
More Decks by slme
See All by slme
Kotlin Serializationことはじめ
slme
1
1.1k
EXIA.pdf
slme
0
160
Other Decks in Technology
See All in Technology
ガバメントクラウドでのランサムウェア対策
techniczna
2
1k
Digitization部 紹介資料
sansan33
PRO
2
7.7k
取引先から届く 「セキュリティチェックシート」の読み解き方
kamadamakoto
0
140
攻撃と防御で学ぶAI時代のプロダクトセキュリティ演習
recruitengineers
PRO
7
2.2k
20260804_Q4AzureUpdateBite_FabricDataAgentの精度を高める設計.pdf
matayuuu
1
120
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.9k
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
53k
強化学習「理論」入門
enakai00
3
3.6k
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
masuda220
PRO
17
6.8k
【CEDEC2026】専門性の高いデフォルメチームが挑んだ人材育成戦略 〜Cygames Academiaの企画から実施まで〜
cygames
PRO
0
530
社内の7割が使うデータ基盤を、 データチーム2人で回すためにやったこと
koh_yoshi
4
1.2k
【CEDEC2026】グラフィックスエンジニアのためのニューラルシェーディング入門
cygames
PRO
0
120
Featured
See All Featured
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
200
Ethics towards AI in product and experience design
skipperchong
2
340
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
210
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
840
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
650
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Designing Experiences People Love
moore
143
24k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Code Review Best Practice
trishagee
74
20k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
YesSQL, Process and Tooling at Scale
rocio
174
15k
4 Signs Your Business is Dying
shpigford
187
22k
Transcript
© DMM.com © DMM.com ViewModel SavedState ~ Zli × DMM合同LT
~ 合同会社DMM.com 石井和馬 2020/07/18 ※ がっつりAndroidの話なのですいません
© DMM.com - 石井和馬 - 会津大学出身 s123 - 合同会社DMM.com -
AQUIZ事業部 - 総合トップ開発部 CDSチーム - https://www.slme.me - twitter: slme_not_found 自己紹介
© DMM.com ViewModel Saved State 3
© DMM.com 簡単に言うと ViewModelでsavedInstanceStateが扱える (in Android) 4
© DMM.com AndroidにおけるViewModelってなに - Android Architecture Componentsで導入されたも の(Jetpackにもある) - ライフサイクルを持っている
- 画面が同一の場合、ViewModelを共有できる - 基本的に画面で扱うデータを保持する場所 5
© DMM.com savedInstanceStateってなに - 画面が破棄されても一時的にデータを保存できるとこ ろ - onSaveInstanceState で保存 -
onCreateなどでgetして復元など - Fragment, Activity(画面)で管理する 6
© DMM.com 微妙なところ - ViewModelは画面で扱うデータを保持する部分 - savedInstanceStateはFragment, Activityでしか扱 えない 7
ViewModelでsavedInstanceStateを扱いたいが Fragment, Activityでしか扱えない
© DMM.com _人人人人人人人人人人人人人_ > ViewModel SavedState <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄ 8
© DMM.com 実際の実装 (with Dagger Hilt) 9
© DMM.com Dagger Hiltがない場合 - 独自にViewModelFactoryを作っている場合 - AbstractSavedStateViewModelFactoryを継承する - DaggerがあればAssistedInjectを使ったり
- ViewModelFactoryを作ってない場合 - Fragment 1.2.0, Activity 1.1.0以上の場合 - デフォルトで利用可能 - Factoryは引き続き不要 - それ以外 - SavedStateViewModelFactoryを使う 10
© DMM.com 内部実装 - SavedStateHandleの内部にMapがある - get, setは内部のMapへのアクセス提供 - onSaveInstanceStateのタイミングで内部に持ってい
るMapをsavedInstanceStateに書き込んでいる - onCreateでsavedInstanceStateから読み込み 11
© DMM.com 注意事項 (主にsavedInstanceStateの) - 型の制約があるので注意 - https://cs.android.com/androidx/platform/frameworks/support/+/androidx-master-dev:lifecycle/l ifecycle-viewmodel-savedstate/src/main/java/androidx/lifecycle/SavedStateHandle.java;l=370 -
大きいデータの保持は非推奨 (できなくはない) - SystemServerのプロセス (システムプロセス)のメモリを利 用するためメモリ逼迫になりやすくなる 12
© DMM.com savedInstanceStateについてもっと知りたい方 13
© DMM.com 導入した結果 14
© DMM.com 開発速度や保守性 ⤴⤴ 15
© DMM.com 参考サイト - https://cs.android.com/androidx - ViewModel の保存済み状態のモジュール | Android
デベロッパー - https://medium.com/@pluulove/android-ui%E3%81%AE%E7%8A%B6%E6% 85%8B%E3%81%8C%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86 %E3%81%AB%E4%BF%9D%E5%AD%98-%E5%BE%A9%E5%85%83%E3 %81%95%E3%82%8C%E3%82%8B%E3%81%AE%E3%81%8B-savedstate -d5da6f373b6f - https://gihyo.jp/book/2017/978-4-7741-8861-4 16
© DMM.com ご清聴ありがとうございました