我有一个loader类,用于在用户登录时从后台加载服务器中的数据。
该类有一个静态字段
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;
}
保留静态字段 previousTime 的值。到目前为止一切都很好。
但对于相同的代码,当用户处于登录状态时,如果重建了应用程序, previousTime 值会丢失并变为空白。
然后我需要再次登录才能获得价值。
我认为保持值静态应该在应用程序重建后保留该值。 但我不清楚是什么导致它变成空白。
答案 0 :(得分:1)
static
变量只是一个变量,它对一个类只有一个值,而不是每个实例一个值。
重新启动程序时,如果程序的旧副本停止,则值将丢失。 当新版本启动时,该值尚未初始化,因此您需要再次登录。
答案 1 :(得分:0)
Well Basicaly最好不要在应用程序中使用任何静态变量,除非您可以在应用程序中重复使用常量和常规函数。
尝试在意图中传递变量,或将它们保存在主要活动中,这些活动已经引用了所有变量。