我有一堆用户首选项保存在我的应用程序的单例对象中。示例模型如下所示 -
public class UserContext {
public static final String WEBSRV_IP = "TRIMMED";
public static UserContext instance;
// Contains username, password, if they're valid etc.
private LoginDataModel loginModel;
private ArrayList<FacilityDataModel> model;
private FilterDataModel filters;
private UserContext()
{
}
public UserContext getInstance()
{
if(instance == null) {
instance = new UserContext();
}
return instance;
}
// Getters and setters
}
现在,随着用户浏览应用程序,我创建了一堆 Activity ,浏览它们的生命周期,利用这些变量并完成。 (例如,在 onStart()
方法中,我在呈现 Activity 之前检查用户是否已登录)。
我的问题是,Android 文档似乎建议我在 onPause()
方法中备份任何与上下文相关的数据。但是 onPause()
每次我自己创建一个新的 Activity 时也会被调用,备份所有 GlobalVariables 似乎很浪费,只能在下一个 Activity 的 onStart()< 中恢复它们
方法。有没有办法确定整个应用程序是否已经进入后台?如果没有,您什么时候真正保存所有全局变量?
谢谢,
泰迦。
最佳答案
我在确定首选项值时保存首选项(使用 SharedPreferences.Editor.commit()),无论是由用户还是应用程序代码。我还没有遇到过将保存首选项延迟到确定有意义之后的某个时间的情况。
关于Android Activity生命周期问题: When to commit GlobalPreferences,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5733043/