0

我有一个只包含公共静态成员的公共类。

我知道这不是最好的做法,但我只是想知道为什么在我的 Android 上,如果我暂停应用程序,打开其他一些应用程序并返回到我的应用程序,所有变量似乎都是(null)。

问题:

  1. 是因为 Android 进行了某种内存释放吗?
  2. 那么有什么更好的方法来保留这些变量呢?
  3. 扩展 Application 的类是一个不错的选择吗?

这是我的代码:

public class Session {

public static String ID = null;
public static String UNIQID = null;
public static String TOKEN = null;
public static String SESSIONID = null;
}
4

2 回答 2

1

由于您的应用程序进程可能随时被破坏,这些静态实例可能确实会被垃圾收集。

如果您将这些静态变量放在自定义 Application 对象中,则同样适用,除​​非您在每次应用程序获得(重新)创建时在应用程序的 onCreate 函数中初始化它们。

您应该使用 SharedPreferences 或 SQLite 数据库来跟踪持久数据。

如果这些变量太复杂而无法像这样存储,那么您可能需要考虑使用单例(不再像以前那样推荐子类化 Application)。

public class MySingleton {

  public static MySingleton getInstance(Context context) {
    if (instance==null) {
      // Make sure you don't leak an activity by always using the application
      // context for singletons
      instance = new MySingleton(context.getApplicationContext());
    }
    return instance;
  }

  private static MySingleton instance = null;

  private MySingleton(Context context) {
    // init your stuff here...
  }

  private String id = null;
  private String uniqueId= null;
  private String token = null;
  private String sessionId = null;
}
于 2012-10-16T15:17:22.910 回答
0
  1. 是的,android 可能会在需要时收集内存

  2. 可能类似于 SharedPreferences

于 2012-10-16T15:16:00.273 回答