我在尝试将值保存到SQLiteDatabase时有点困惑。我希望我的应用程序能够无缝地保存状态和数据,因此我首先将“保存到SQLDb(AsyncTask)”代码放入onStop(),并在onStart()中加载“从SQLDb加载”代码。但是,我注意到这是不可靠的:按后面或主页按钮调用onPause(),有时 onStop(),当应用程序返回到前台时,Spinner项目有时会那里,有时是空的,其余的视图/内容也是不可预测的,因为是否已经调用onStop()/ onStart()。
所以我将“保存”代码移动到onPause(),并将“加载”代码移动到onResume()。现在,我已经在文档中读到这些方法不应该在这些方法中完成,但在大多数情况下,它比onStop()和onStart()更好。但是,它仍然不完全可靠:有时AsyncTask似乎永远不会结束。如果用户在AsyncTask完成之前将应用程序带回前台,则会导致上述不可预测的视图。
我应该在哪里保存这些东西?
注意:我有两个用户可以动态添加项目的Spinner,以及一个必须根据其中一个Spinners(每个Spinner项目一个gridChild)重新填充自己的GridView。据我所知,这种东西不能通过SharedPreferences或类似的状态保存技术轻松保存,它必须由数据库完成(特别是因为有不确定数量的对象被保存,具体取决于用户输入的内容)。 / p>
答案 0 :(得分:1)
通常,您会保留数据onPause()
并将其恢复为onResume()
。
这是因为如果系统需要杀死您的应用,则无法保证调用onStop()
。