gpt4 book ai didi

android - app "ends"时存储数据

转载 作者:行者123 更新时间:2023-11-30 04:09:20 24 4
gpt4 key购买 nike

我有一个小型数据库,并在一个名为 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;
}

现在,在应用程序的每个类/Activity 中,我都可以轻松访问 MainDataManager.mainDataManager 数据。

有时候我想把数据存回数据库。

目前我在

中的每个 Activity 上都这样做
 @Override
protected void onPause() {
super.onPause();
saveState(); //saves the mainDataManager's data to the DB
}

我想避免这种情况,并且认为如果我仅在用户退出应用程序时更新数据库(无论这意味着什么),或者当 Android 想要销毁 MainDataManager 对象时更好,它实际上就足够“保存”了。

虽然我可以将我的 saveState() 调用放在 onDestroy() 方法的 Activity 中 - 我更愿意仅在 MainDataManager 对象获取时将数据保存到 DB被毁。但是普通对象没有 onDestroy()

处理该问题的最佳方法是什么?

ps 我不想在每个 Activity 的 onDestroy() 中使用 saveState() 的原因是,即使数据很少,保存到数据库也非常慢(尤其是在旧版 Android 手机上! ) 这不是逻辑 - 只是因为任何 Activity 都被破坏 - 然后更新数据库。

非常感谢

最佳答案

What would be the best way to handle that?

您目前处理它的方式,尽管可能使用 onPause() 中的 AsyncTask,并且仅来自您更改数据的 Activity ,并且可能使用一些某种 isDirty 标志,让您知道是否需要保留数据。

您不想等到 onDestroy()真正原因是不能保证调用 onDestroy()

I would prefer to only save the data to DB if the MainDataManager object gets destroyed.

该对象永远不会被“销毁”——它会一直存在,直到进程终止。

关于android - app "ends"时存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11082284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com