0

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を介してサーバーから提供された値を取得しているため、フェッチ時に取得する値が古い値であり、最新の値ではないことです。ただし、古い値と最新の値を取得しますは取り出されません。

ありがとう

4

1 に答える 1