Angular ngrx обновляет компонент при изменении состояния

Вы можете сохранить свой Синглтон, когда onSaveInstanceState() в вызове Activity вызывается. Все, что вам нужно сделать, это сделать его Parcelable (это андроиды собственной формы сериализации), то вы можете поместить его в outState Bundle в onSaveInstanceState(), который позволит вам чтобы получить его в onCreate() или onRestoreInstanceState() в Деятельности, в зависимости от того, что вам нравится.

Я привел пример для вас:

public class TestActivity extends Activity {

    private MySingleton singleton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if(savedInstanceState.containsKey("singleton")) {
            singleton = savedInstanceState.getParcelable("singleton");
        } else {
            singleton = MySingleton.getInstance(5);
        }
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putParcelable("singleton", singleton);
    }

    public static class MySingleton implements Parcelable {

        private static MySingleton instance;
        private int myData;

        private MySingleton(int data) {
            myData = data;
        }

        public static MySingleton getInstance(int initdata) {
            if(instance == null) {
                instance = new MySingleton(initdata);
            }

            return instance;
        }

        public static final Parcelable.Creator CREATOR = new Creator() {

            @Override
            public MySingleton[] newArray(int size) {
                return new MySingleton[size];
            }

            @Override
            public MySingleton createFromParcel(Parcel source) {
                return new MySingleton(source.readInt());
            }
        };

        @Override
        public int describeContents() {
            return 0;
        }

        @Override
        public void writeToParcel(Parcel parcel, int flags) {
            parcel.writeInt(myData);
        }

    }

}

0
задан Marcus Horne 17 January 2019 в 11:55
поделиться