问题描述
我是 java 和 android studio 的新手,在阅读文档后,我仍然对 Activity 生命周期以及如何有效使用它有些困惑。
我正在构建一个包含多项活动的应用程序。在主活动中首次打开应用程序时会加载关键数据。但是,当我移动到另一个活动然后返回主活动时,再次调用了我不想要的 onCreate。我知道有一种方法可以保存您的 onCreate 实例,但我仍然不确定如何执行此操作。这是我所做的:
select id,name,datediff(max(date),min(date)) as num_days
from t
group by id,name;
希望得到任何形式的支持和指导。谢谢。
解决方法
再次 - 不是一个简单的问题。
首先:是的,您可以通过覆盖:onSaveInstanceState() 来保存“来自上次会话”的数据,并通过覆盖 onRestoreInstanceState(savedInstanceState: Bundle?) 来恢复数据。看这里:https://developer.android.com/guide/components/activities/activity-lifecycle#saras
其次:根据您的描述,您似乎需要更多的 SharedPreferences。如果您需要任何东西的密钥,并且应该从应用程序打开直到它被杀死或用户注销时使用它,SharedPreferences 是最常见的解决方案。
onSaveinstanceState() 的创建是为了能够记住“上次会话中”屏幕上的内容,而无需再次“计算”它。例如 EditText.text 或 ImageView.url 或类似的。