Android“全局变量”不坚持

时间:2012-05-23 05:28:17

标签: java android string persistence

我创建了一个类,它将Application扩展到我想要从多个活动访问的存储变量

public class MyApplication extends Application 
{
private String fbId, firstName;
private long expires;

@Override
public void onCreate() 
{
    super.onCreate();
}

public String getFbId() 
{
    return fbId;
}

public void setFbId(String fbId) 
{
    this.fbId = fbId;
}

public String getFirstName()
{
    return firstName;
}

public void setFirstName(String firstName) 
{
    this.firstName = firstName;
}

我能够在第一次运行应用程序时访问这些变量并设置这些变量。一旦我退出并重新启动应用程序,它会将我的值设置为null,为什么会出现这种情况的任何建议?

3 个答案:

答案 0 :(得分:4)

如果您不将数据存储在存储中(不需要是数据库,可以是平面文件,SharedPreferences或其他),那么它就不会持久存在。

您应该使用SharedPreferences来保存此类持久数据。

  

SharedPreferences类提供了一个通用框架,允许您保存和检索原始数据类型的持久键值对。您可以使用SharedPreferences保存任何原始数据:布尔值,浮点数,整数,长整数和字符串。这些数据将在用户会话中持续存在(即使您的应用程序被终止)。

答案 1 :(得分:0)

无法在任何语言中保留变量。只要程序的生命周期结束,所有变量都会被破坏,内存将从RAM /堆内存释放。

持久性您有以下选项,

  1. 文件系统
    • 简单文件格式(例如.txt)
    • 逗号分隔文件格式(例如.csv)
  2. 数据库
    • Sqlite(如果是Android)
    • RMS(如果是Java ME,BlackBerry)
  3. 编程Languag支持的持久存储
    • SharredPreference
  4. 只有将变量的值存储到上述任何一种机制中,才能使您的值持久性

答案 2 :(得分:0)

如果您在回来时需要数据,可能需要保留数据。您可以使用不同的存储介质,例如SharedPreference,Local Files,sqlite等。请参阅here