【问题标题】:static field becomes blank after application rebuilt应用程序重建后静态字段变为空白
【发布时间】:2013-08-22 11:30:23
【问题描述】:

我有一个加载器类,当用户登录时,它会在后台从服务器加载数据。

该类有一个静态字段,

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 值丢失并变为空白。

那我需要重新登录,才能拿到值。

我认为即使在应用程序重建后保持值静态也应该保​​留该值。 但我不清楚是什么导致它为空白。

【问题讨论】:

  • 使用共享偏好并将值存储在那里
  • 好主意,我会这样做的。但是有什么理由为什么一旦赋值就变成空白了吗?
  • 当应用程序重新启动时,您的静态值会重新初始化。
  • 非常详细。谢谢@Raghunandan。

标签: android scope static-methods


【解决方案1】:

static 变量只是一个变量,对于一个类只有一个值,而不是每个实例一个值。

当您重新启动程序时,该值会在程序的旧副本停止时丢失。 新版本启动时,该值尚未初始化,需要重新登录。

【讨论】:

    【解决方案2】:

    好吧,基本上最好不要在应用程序中使用任何静态变量,除非您可以在应用程序中重复使用常量和通用函数。

    尝试按意图传递变量,或将它们保存在对所有都有引用的主要活动中。

    【讨论】:

      猜你喜欢
      • 2014-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-08
      • 2012-06-23
      相关资源
      最近更新 更多