package com.yotadevices.sdk;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Parcel;
import android.util.Base64;
/**
* @hide
*/
class BSRecord {
private final static String PREF_NAME = "instanceState";
private Context mContext;
private String mName;
/**
* Last retrieved freeze state.
*/
private Bundle mInstanceState = new Bundle();
public BSRecord(Context context, String name) {
mContext = context;
mName = name;
}
public Bundle getData() {
return mInstanceState;
}
private SharedPreferences getPreference() {
return mContext.getSharedPreferences("_" + mName, Context.MODE_PRIVATE);
}
synchronized void saveState() {
Parcel parcel = Parcel.obtain();
try {
mInstanceState.writeToParcel(parcel, 0);
String savedState = Base64.encodeToString(parcel.marshall(), 0);
if (savedState != null) {
Editor editor = getPreference().edit();
editor.putString(PREF_NAME, savedState);
editor.commit();
}
} finally {
parcel.recycle();
}
}
synchronized void restoreState() {
String savedState = getPreference().getString(PREF_NAME, null);
if (savedState != null) {
Parcel parcel = Parcel.obtain();
try {
byte[] data = Base64.decode(savedState, 0);
parcel.unmarshall(data, 0, data.length);
parcel.setDataPosition(0);
mInstanceState = parcel.readBundle();
} finally {
parcel.recycle();
}
}
}
}