0

我在尝试将值保存到 SQLiteDatabase 时有点困惑。我希望我的应用能够无缝地保存状态和数据,所以我首先将“保存到 SQLDb (AsyncTask)”代码放入 onStop(),并将“从 SQLDb 加载”代码放入 onStart()。但是,我注意到这是不可靠的:按下后退或主页按钮会调用 onPause(),有时还会调用 onStop(),当应用程序回到前台时,Spinner 项目有时会出现,有时会是空的,并且由于是否调用了 onStop()/onStart(),其余的视图/内容也是不可预测的。

所以我将“保存”代码移至 onPause(),将“加载”代码移至 onResume()。现在,我在文档中读到这种方法不应该在这些方法中完成,但在大多数情况下,它比 onStop() 和 onStart() 效果更好。然而,它仍然不完全可靠:有时 AsyncTask 似乎永远不会结束。如果用户在 AsyncTask 完成之前将应用程序带回前台,则会导致上述不可预测的 Views。

我应该在哪里保存这些东西?

注意:我有两个 Spinner,用户可以向其中动态添加项目,还有一个 GridView,它必须基于其中一个 Spinner(每个 Spinner 项目一个 gridChild)重新填充自身。据我所知,这类东西无法通过 SharedPreferences 或类似的状态保存技术轻松保存,必须由数据库完成(特别是因为要保存的对象数量不定,具体取决于用户输入的内容)。

4

1 回答 1

1

通常,您保留数据onPause()并恢复它onResume()

这是因为onStop()如果系统需要终止您的应用程序,则不保证会被调用。

于 2013-02-11T17:20:17.610 回答