由于您的应用程序进程可能随时被破坏,这些静态实例可能确实会被垃圾收集。
如果您将这些静态变量放在自定义 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;
}