Shared Preferences を使用して変数をフェッチして保存し、次に別のクラスでその変数をフェッチします。アプリを再起動すると、保存されている初期変数が新しい変数によって更新されます。私が見ることができるのは、アプリケーションを終了するときに、共有設定をクリアするように設定してから、フェッチ値を再度フェッチする必要があることです。
ただし、問題は、再起動しても共有設定が古い値を保存し、更新されないことです。
これは、最初に値を保存するコードです
protected void onLoginSuccess(String cookieString, String userName) {
// set cookie and initialize data center.
mCookieString = cookieString;
SharedPreferences settings =getSharedPreferences("cookie",MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("cookie", cookieString);
editor.commit();
//editor.apply();
mDataCenter = new LsApiDataCenter(this, userName);
mCachedUserData.clear();
System.out.println("shhhhhhhhhhhh iis original : "+cookieString);
mSendersObservers.clear();
mMessageObservers.clear();
mNotificationObservers.clear();
後で、終了時に共有設定をクリアしたいのですが、これが私のやり方です
protected void onLogoutSuccess() {
// clear cookie and data center.
SharedPreferences settings =getSharedPreferences("cookie",MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.clear().commit();
mCookieString = null;
mDataCenter = null;
mCachedUserData.clear();
mSendersObservers.clear();
mMessageObservers.clear();
mNotificationObservers.clear();
最後に、これは私が完全に異なるクラスでそれらを取得する方法です
SharedPreferences settings = mMainActivity.getSharedPreferences("cookie", Context.MODE_PRIVATE);
count = settings.getString("cookie","");
問題は、ユーザーがログインするときに使用されるAPIを介してサーバーから提供された値を取得しているため、フェッチ時に取得する値が古い値であり、最新の値ではないことです。ただし、古い値と最新の値を取得しますは取り出されません。
ありがとう