2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Activityのインスタンス破棄対策ライブラリFridge

Posted at

#Fridgeとは

AndroidのActivityの破棄復元対策のライブラリです。
AndroidのActivityやFragmentはシステムによって破棄-復元されるのでプログラマは必要に応じて値を退避・復元します。
自前で書くと onSavedInstanceState で退避処理をして onCreate などで復元処理をしますが、対象のフィールドが多いと似たような処理を大量に書く必要があって面倒なので、ライブラリを導入して楽をします。

有名なライブラリに Icepick があります。

Icepickとの違い

Icepickはアノテーションプロセッサで退避復元のためのコードを生成しますが、Fridgeはランタイムでアノテーションを解析して退避復元処理をします。

Icepickはサイズが大きいですが、Fridgeはたったの3ファイルですので軽量です。

##名前の由来
大昔のActivityの破棄・復元に関するBundleの変数名はsavedInstanceStateでなく、icicle(つらら)でした。
有名なライブラリもIcepick(アイスピック)でしたので、このライブラリは冷蔵庫を意味する Fridge としました。

#導入

##Gradle
###プロジェクトのbuild.gradle
jitpackで配布しているので以下を追加

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}

###モジュールのbuild.gradle
appなどのモジュールのdependenciesにライブラリを指定

dependencies {
    implementation 'com.github.SaikoRobot:Fridge:0.2.0'
}

使い方

基本的に Icepickと同じです

MainActivity.java
public class MainActivity extends Activity {

    private int nonStateValue;

    @State
    private int stateValue;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Fridge.restoreInstanceState(this, savedInstanceState);
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        Fridge.saveInstanceState(this, outState);
    }
}

#source
Fridge

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?