Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ViewModel SavedState
Search
slme
July 18, 2020
Technology
160
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
AWS Quick 入門 | 目指せ Quick マスター 01
inariku
PRO
2
290
大江戸Ruby会議でデータベース クライアントの話をするのは 間違っているだろうか
yahonda
1
120
An Introduction to Context Ontology Accelerator (teaching AI agents what your data means)
inariku
PRO
1
200
Metadata - Section 3 : Dublin Core Standard · DC
mohab1
0
120
Microsoft Entra Kerberos で実現するクラウド デバイス管理
tamaiyutaro
2
660
プロダクションコードにおける encoding/json から encoding/json/v2 へのスムーズな移行
sansantech
PRO
1
250
AI時代における医療情報システムのセキュリティ / Security of Healthcare IT Systems in the AI Era
henryofficial
0
140
慶應義塾大学 AI実践05 論文執筆の仕組み化
keio_smilab
PRO
7
3.8k
並列度を下げたら速くなった — go build の重複コンパイルを実測で見る
tomoaki25
2
1.1k
続・ソフトウェアアーキテクトのための意思決定術: Decision Readiness, Revisited — When AI Changes the Economics of Software Architecture
snoozer05
PRO
9
2.8k
cdkd (CDK Direct)
gotok365
4
290
Kiro Crew 入門 (手を離しても進む仕事) | 目指せ Kiro マスター 11
inariku
PRO
4
680
Featured
See All Featured
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
300
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
820
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
470
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
570
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.9k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
890
Heart Work Chapter 1 - Part 1
lfama
PRO
11
37k
Designing for humans not robots
tammielis
254
26k
SEO for Brand Visibility & Recognition
aleyda
0
4.9k
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 ご清聴ありがとうございました