2019年10月8日火曜日

Master of Dagger の正誤表

技術書典7で出した「Master of Dagger」の正誤表です。

10章 10.1 ViewModel




Androidにはリソースが足りなくなったときにフレームワークがしばらく使われていないActivityを破棄し、あとでそのActivityが必要になったときに再生成する仕組みがあります。
Activityでデータを持っていると、Activityが破棄されるときに一緒に消えてしまうため、サーバーから再度取得したり、破棄されるときにデータを保存して再生成時にリストアする処理が必要になります。
ViewModelはこの破棄・再生成時のデータ保存処理を楽にしてくれます。ViewModelはActivityの再生成を超えてインスタンスが保持される仕組みになっており、ViewModelでデータを持っておけば破棄・再生成後も以前のデータにアクセスできます。



AndroidではConfigurationが変わったときにActivityを破棄して作り直す仕組みがあります。Configurationには画面の向きや言語設定や画面サイズなどがあり、Activityを作り直す仕組みによって新しいConfigurationに最適なレイアウトや文字列リソースで画面が作られます。
しかしActivityで保持していたデータは画面回転などConfigurationの変更によってActivityが再生成されるときに消えてしまいます。そのため再度データを取得したり、Activityが破棄されるときにデータを保存して再生成時にリストアする処理が必要になります。ViewModelはこのデータの引き継ぎ処理を楽にしてくれます。
ViewModelはConfigurationの変更によるActivityの再生成を超えてインスタンスが保持される仕組みになっており、ViewModelにデータを持たせるようにすれば、再生成後のActivityからも以前のデータにアクセスすることができます。



12章 ViewModelでSavedStateHandleを使う




この章ではAssistedInjectを使ってDaggerに生成させるViewModelにSavedStateHandleを組み込む方法を紹介します。



この章ではSubcomponentを使ってDaggerに生成させるViewModelにSavedStateHandleを組み込む方法を紹介します。



13章 13.1 Android で Dagger を使うときの問題点




ボイラーブレート



ボイラープレート



2章 2.1 Dagger とは




*2 Dagger 1はリフレクションベースの動的DIフレームワークでした



削除 (Dagger 1では一部リフレクション使った機能がありました)