見出し画像

[Android] SavedState を簡単に扱える View-SavedState-ktx をリリースしました

# View-SavedState-ktx とは

AndroidX SavedStateDelegated Properties で簡単に扱えるようにするライブラリです。Activity や Fragment での記述が簡単になります。

## AndroidX SavedState とは

AndroidX ライブラリの一つで、savedInstanceState の状態保存・復元プロセスにフックできるライブラリです。

# View-SavedState-ktx は何が嬉しいのか

## onSavedInstanceState() が不要になる

これまで onSavedInstanceState() で保存し、onCreate で復元する必要があった Activity または Fragment の状態変数が、Kotlin の Delegated Properties で以下のように書くことができます。

class SampleActivity : AppCompatActivity(R.layout.sample_activity) {
   private val state by savedState()
   private var count by state.property({ getInt(it) }, { key, value -> putInt(key, value) })
   private var text by state.property({ getString(it, "default value") }, { key, value -> putString(key, value) })

   override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       // You can use properties after onCreate
       count++
   }
}

状態保存・復元は自動的に行われるため、onSavedInstanceState() の呼び出しは不要になり、状態保存・復元用のキーの定数も不要になります。

## Activity の Intent または Fragment の Arguments の値がデフォルト値となる

Intent や Arguments で状態の初期値を受け取る場合、デフォルト値となり、透過的に扱うことができます。

class SampleActivity : AppCompatActivity(R.layout.sample_activity) {
   private val state by savedState()
   private var count by state.property({ getInt(it) }, { key, value -> putInt(key, value) })
   private var text by state.property({ getString(it, "default value") }, { key, value -> putString(key, value) })

   companion object {
       fun createIntent(context: Context, count: Int) = Intent(context, SampleActivity::class.java)
           .also {
               it.putExtra(SampleActivity::count.name, count)
           }
   }
}

プロパティリファレンスで変数名をキーにできるので、キーの定数の定義が不要になります。

# View-SavedState-ktx を使う

build.gradle に以下を追加してください。

repositories {
    maven { url "https://www.jitpack.io" }
}
dependencies {
    implementation 'com.github.wada811:View-SavedState-ktx:1.0.0'
}

# 参考リンク

本来の AndroidX SavedState の利用方法を知りたい方にはコチラがオススメです。

AndroidX SavedState を完全に理解したい場合は、コチラのソースコードリーディング記録がオススメです。

このライブラリに関する記事をコチラのマガジンでまとめています。

ここから先は

0字
このマガジンを購読すると、マガジンに追加されているノートを、有料ノート・無料ノートにかかわらず、すべて閲覧することができるようになります。また、購入後に追加されたノートがあった場合、追加料金なしですべてのノートを閲覧できます。

SavedState を簡単に使えるライブラリ View-SavedState-ktx についての記事をまとめています。

この記事が気に入ったらサポートをしてみませんか?