Java 只有公共静态成员的公共类
我有一个只包含公共静态成员的公共类 我知道这不是最好的做法,但我只是想知道为什么在我的Android上,如果我暂停应用程序,打开一些其他应用程序,然后返回到我的应用程序,所有变量似乎都是(null) 问题:Java 只有公共静态成员的公共类,java,android,Java,Android,我有一个只包含公共静态成员的公共类 我知道这不是最好的做法,但我只是想知道为什么在我的Android上,如果我暂停应用程序,打开一些其他应用程序,然后返回到我的应用程序,所有变量似乎都是(null) 问题: 这是因为安卓系统释放了某种内存吗 那么,有什么更好的方法来保存这些变量呢 扩展应用程序的类是一个好的选择吗 这是我的密码: public class Session { public static String ID = null; public static String UNIQID
public class Session {
public static String ID = null;
public static String UNIQID = null;
public static String TOKEN = null;
public static String SESSIONID = null;
}
由于您的应用程序进程可能随时被破坏,这些静态实例可能确实会被垃圾收集 如果将这些静态变量放在自定义应用程序对象中,则同样适用,除非每次(重新)创建应用程序时在应用程序的onCreate函数中初始化它们 您应该使用SharedReferences或SQLite数据库跟踪持久数据
如果这些变量太复杂而不能像这样存储,那么你可能需要考虑使用一个单独的子类(子类的应用程序不像以前那样被推荐)。
谢谢但我觉得没有必要把所有这些信息都放在SharedReferences中(上面只是一个例子)。是单例还是应用程序类更好/最差的选择?我理解其中的痛苦,应用程序类作为静态字段总是容易受到攻击。我会选择共享首选项或SQLLite数据库。好的。但是SharedReferences需要一个上下文,所以确实有点麻烦。你必须以某种方式保存状态,因为Android不会为你这样做。SharedPrefs只是一种可能的方法。请看这里:为什么上下文会让人痛苦?@Fildor嗯,它并不复杂,我只是懒惰,因为以前只需
会话就可以轻松完成。有些东西^^^^但我明白了,您为此处显示的所有变量指定了null。你说的是哪一个变量?使用SharedReferences来保存你的变量,因为当你使用类会话和公共静态时,android可以在必要时清理内存members@BheshGurung它们稍后会被设置为onOk,所以应用程序类也有相同的GC相关问题。谢谢,我有一些数据,但很复杂。单身对我来说是最好的选择。
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;
}