3

我创建了一个扩展 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,对于为什么会发生这种情况有什么建议吗?

4

3 回答 3

4

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

您应该使用SharedPreferences来保存这种持久性数据。

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

于 2012-05-23T05:32:07.643 回答
0

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

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

  1. 文件系统
    • 一种简单的文件格式(例如 .txt)
    • 逗号分隔文件格式(例如 .csv)
  2. 数据库
    • Sqlite(在 Android 的情况下)
    • RMS(在 Java ME、BlackBerry 的情况下)
  3. 编程语言支持的持久性存储
    • 共享偏好

只有将变量的值存储到上述任何机制中,您才能使值持久化

于 2012-05-23T05:33:20.967 回答
0

如果您回来时需要这些数据,您可能希望保留这些数据。您可以为相同的存储介质使用不同的存储介质,如 SharedPreference、Local Files、sqlite 等。请参考这里

于 2012-05-23T05:33:49.210 回答