にユーザー状態を維持私がログインプロセスとアプリ、IユーザーがログインがこのようなLoginHolderクラスに情報を格納するたびに持っている:あなたが見ることができるようにメモリ
private static final java.lang.String TAG = tag(LoginHolder.class);
private static LoginHolder INSTANCE;
private SharedPreferences mSharedPreferences;
private LoginDetails mLoginDetails;
private UserInfo mUserInfo;
private LoginHolder(SharedPreferences sharedPreferences) {
mSharedPreferences = sharedPreferences;
}
public synchronized static LoginHolder instance(SharedPreferences prefs) {
if (INSTANCE == null) {
INSTANCE = new LoginHolder(prefs);
}
return INSTANCE;
}
public LoginDetails getLoggedUser() {
return mLoginDetails;
}
@DebugLog
public void setLoggedUser(@NonNull LoginDetails loginDetails) {
this.mLoginDetails = loginDetails;
}
@DebugLog
void setUserInfo(@NonNull UserInfo userInfo) {
mUserInfo = userInfo;
}
public UserInfo getUserInfo() {
return mUserInfo;
}
}
をこれは、私がDaggerを使用して注入しているシングルトンクラスです。
私は2つのアクティビティを持っています.1つはアクティビティAで、もう1つはアクティビティBです。アクティビティBを起動します(概念的には親、マスターディテール関係の一種です)。 Bでクラッシュが発生すると、Aアクティビティが再作成されます。私はロギングを確認して、実際にはアプリケーション全体が再作成されます(Applicationオブジェクトまで)。これにより、シングルトンが去るため、ユーザー情報も消えます。
これまでのところ、私は唯一の私は、これは他のケースと同様に、予想外に起こるかもしれない恐怖(任意のアイデア?)
を、私はすべての回でメモリ内にこの情報を保存するにはどうすればよい(ユーザーまでが、この場合には、それを再現することができもちろんログアウトしますか?)
で簡単なSHaredPreferenceを使用しています。 –
「これはどのように可能ですか? - 'mUserInfo'には決して値が割り当てられないので、常に' null'になります。もちろん、ここにあなたの 'LoginHelper'コードをすべて表示していない限りはありません。その場合、あなたのコードが参照するものが何であるか分からず、 'mUserInfo'を操作することができないので、私たちは本当に助言することはできません。 – CommonsWare
@CommonsWareは、私は、全体のコードを投稿didntは、右のthats、私は実際には、私のアプリのすべての画面は、このクラスに依存ゲッター&セッター – MichelReap