我有一个小型数据库,并在名为 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()
原因是,因为即使数据很少(尤其是在旧的Android手机上!)保存到数据库也很慢,这不是逻辑 - 只是因为任何活动正在被破坏-然后更新数据库。
非常感谢