Java 安卓;“全局变量”;不坚持

Java 安卓;“全局变量”;不坚持,java,android,string,persistence,Java,Android,String,Persistence,我创建了一个类,该类扩展应用程序以存储我希望从多个活动访问的变量 public class MyApplication extends Application { private String fbId, firstName; private long expires; @Override public void onCreate() { super.onCreate(); } public String getFbId() { return fbId; } publ

我创建了一个类,该类扩展应用程序以存储我希望从多个活动访问的变量

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,是否有任何关于发生这种情况的建议?

如果您不将数据存储在存储器中(不需要是数据库,可以是平面文件、SharedReferences或其他内容),则数据不会持久化

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

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


在任何语言中都无法持久化变量。只要程序的生命周期结束,所有变量就会被销毁,内存就会从RAM/堆内存中释放

对于持久性,您有以下选项:

  • 文件系统
    • 一种简单的文件格式(例如.txt)
    • 逗号分隔文件格式(如csv)
  • 数据库
    • Sqlite(对于Android)
    • RMS(对于Java ME、BlackBerry)
  • 编程语言支持的持久性存储
    • 切分偏好

  • 只有将变量的值存储到上述任何一种机制中,才能使值持久化,如果返回时需要,您可能希望持久化数据。您可以使用不同的存储介质来存储相同的内容,如SharedReference、本地文件、sqlite等。请参阅

    这是正确的答案,RAM中的任何内容都不是持久的。好的,我以前使用过SharedReference,但我想这也会起到类似的作用。如果您不将数据存储在存储器中(这不需要是数据库,也可以是平面文件、SharedReferences或任何东西)那么它就不是持久性的。