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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
脱金融のフューチャー・デザイン / Future Design Beyond Finance
ks91
PRO
0
150
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
2
550
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
カードゲーム作りが教えてくれた プロダクトオーナーシップ
moritamasami
0
110
Foxgloveについて 実際にExtensionを開発して公開するまでの話 / About Foxglove: The Story of Developing and Releasing an Extension
ry0_ka
0
290
CSに"SLO"は要らない、経営層に"99.9%"は伝わらない - SREを全社に"翻訳"する3原則
cscengineer
PRO
1
4.9k
SRE本の知られざる名シーン / The Hidden Gems of Google SRE Book
nari_ex
1
420
AIレビューはどこまで任せられるのか?自動化と人が背負うレビューの境界
sansantech
PRO
3
1k
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
250
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
13
6.4k
OPENLOGI Company Profile for engineer
hr01
1
74k
AmplifyHostingConstructからSSRフレームワークのためのホスティング設計を考察する/amplify-hosting-construct
fossamagna
1
200
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
880
Scaling GitHub
holman
464
140k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
290
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
510
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
300
Technical Leadership for Architectural Decision Making
baasie
3
440
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
The browser strikes back
jonoalderson
0
1.4k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
340
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
420
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
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 ご清聴ありがとうございました