仅包含公共静态成员的公共类

时间:2012-10-16 15:13:25

标签: java android

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

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

问题:

  1. 是不是因为Android发布了某种内存?
  2. 那么保留这些变量的更好方法是什么?
  3. 是一个扩展Application的类是一个很好的选择吗?
  4. 这是我的代码:

    public class Session {
    
    public static String ID = null;
    public static String UNIQID = null;
    public static String TOKEN = null;
    public static String SESSIONID = null;
    }
    

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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;
}

答案 1 :(得分:0)

  1. 是的,android可能会在需要时收集内存

  2. 可能类似于SharedPreferences