【发布时间】:2012-06-18 11:55:13
【问题描述】:
我有一个小型数据库,并读取了一个像这样静态存储在名为 MainDataManager 的类中的 Singleton 对象中所需的数据提取:
public class MainDataManager {
private static Context context;
public static MainDataManager mainDataManager = null;
public static MainDataManager getInstance(Context ctx) {
context = ctx;
if (mainDataManager == null) {
...get the data from DB
...put the data in static mainDataManager variable
}
return mainDataManager;
}
现在在应用程序的每个类/活动中,我都可以轻松访问 MainDataManager.mainDataManager 数据。
有时我想将数据保存回数据库。
目前我对
中的每个活动都执行此操作 @Override
protected void onPause() {
super.onPause();
saveState(); //saves the mainDataManager's data to the DB
}
我想避免这种情况,并认为如果我仅在用户退出应用程序时更新数据库(无论这意味着什么),它实际上就足够“节省”了 - 或者当 Android 想要销毁 MainDataManager 对象时甚至更好。
虽然我可以将我的 saveState() 调用放在 onDestroy() 方法中的活动中 - 如果 MainDataManager 对象被破坏,我宁愿只将数据保存到 DB。但是普通对象没有onDestroy()。
最好的处理方法是什么?
ps 我不想在每个活动的onDestroy() 中保存 saveState() 的原因是,因为即使数据很少(尤其是在较旧的 Android 手机上!),保存到数据库也很慢,这不是逻辑 - 仅仅因为任何活动都被破坏 - 然后更新数据库。
非常感谢
【问题讨论】:
标签: android database object-lifetime