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
Escolhendo LLMs na Prática: Lições Reais em Busca Agêntica no Mercado Livre —TDC 2026 Floripa
jpbonson
0
110
歴史から理解するクラウドインフラのしくみ
kizawa2020
0
190
WEBフロントエンド研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
2
830
ここは地獄!つらい朝会を体験することで、チームとしてのより良い振る舞いに気づくワークショップ / The stand-up meeting from hell in the game industry
scrummasudar
0
440
システム監視を 「システムを監視するだけ」で 終わらせないために
seiud
0
160
AIがAPIを書く時代に、私たちは何を設計すべきか
nagix
0
170
現場で使える AWS DevOps Agent 活用ノウハウ - Release Management 機能の検証結果を添えて / AWS DevOps Agent Release Management and Know-How
kinunori
5
810
データエンジニアこそ組織のオントロジーに向き合うべき — 問いに答えるAIから、事業を動かすAIへ
gappy50
7
2.8k
NetBoxを利用した作業効率化の試み_NetDevNight4
tnoha
0
410
AI時代の強いチームの作り方
yuukiyo
17
9k
PLaMo 3.0 Primeの事後学習
pfn
PRO
0
210
Retriever と Reranker、結局どうする?
kazuaki
1
530
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
290
AI: The stuff that nobody shows you
jnunemaker
PRO
9
850
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Building the Perfect Custom Keyboard
takai
2
820
Design in an AI World
tapps
1
270
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
470
Code Review Best Practice
trishagee
74
20k
The Spectacular Lies of Maps
axbom
PRO
1
880
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
920
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
230
RailsConf 2023
tenderlove
30
1.5k
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 ご清聴ありがとうございました