0

ユーザーがログインしたときにバックグラウンドでサーバーからデータをロードするローダークラスがあります。

クラスには静的フィールドがあり、

public static String previousTime = "";

このフィールドには、(バックグラウンドで) 次のコードで値が割り当てられます。

long localTime = dateTimeZone.convertLocalToUTC(lastSynchDate.getMillis(), false);
SyncDateTime = formatter.print(localTime);

if(!response.equals(""))
{
JSONObject resetJson = new JSONObject(response);

previousTime = resetJson.getString("previousTime");

success = resetJson.getString("success");
}
}

if(previousTime.equals(""))
{
previousTime = SyncDateTime;
}

static フィールドpreviousTimeの値は保持されます。ここまでは順調ですね。

ただし、同じコードの場合、ユーザーがログイン状態にある間にアプリケーションが再構築されると、previousTimeの値が失われ、空白になります。

次に、値を取得するために再度ログインする必要があります。

値を静的に保つことは、アプリケーションの再構築後も値を保持する必要があると考えました。しかし、何が原因で空白になっているのかはっきりとはわかりません。

4

2 に答える 2

1

static変数は、インスタンスごとに 1 つの値ではなく、クラスに対して 1 つの値を持つ単なる変数です。

プログラムを再起動すると、プログラムの古いコピーが停止すると値が失われます。新しいバージョンが起動すると、その値は初期化されていないため、再度ログインする必要があります。

于 2013-08-22T11:35:10.060 に答える
0

Well Basicaly its better not using any static vars in application unless for Constants and general function which you can re-use in application.

Try passing the vars in intent, or saving them in main activity which have ref to all.

于 2013-08-22T12:50:45.823 に答える