Вы можете сохранить свой Синглтон, когда 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);
}
}
}