我有一个仅包含公共静态成员的公共类。
我知道这不是最好的事情,但是我只是想知道为什么在我的Android上,如果我暂停应用程序,打开其他几个并返回我的列表,那么所有变量似乎都是(null)。
问题:
是因为Android发行了某种内存版本吗?
那么,什么是保留此类变量的更好方法呢?
扩展Application的类是一个不错的选择吗?
这是我的代码:
public class Session {
public static String ID = null;
public static String UNIQID = null;
public static String TOKEN = null;
public static String SESSIONID = null;
}
最佳答案
由于您的应用程序进程随时可能被破坏,因此那些静态实例实际上可能会被垃圾回收。
如果将这些静态变量放在自定义的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;
}
关于java - 只有公共(public)静态成员的公共(public)类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12917883/