当按下后退按钮时,如何保存Android应用程序中唯一活动的状态?

当按下后退按钮时,如何保存Android应用程序中唯一活动的状态?,android,state,Android,State,我正在制作一个只有一个活动的应用程序。当我按下“主页”或“最近使用的应用”按钮时,状态已正确保存,当我返回应用时,所有内容都已保存。当我按下后退按钮并稍后返回应用程序时,savedInstanceState在onCreate中始终为空。我已经读到,当按下后退按钮时,状态不会被保存,但考虑到后退和主页按钮同样有效,在用户尝试返回到他们正在做的事情之前,在我的情况下,这似乎是不直观的。当按下后退按钮时,是否无法保存状态 如果我必须进行一些持久存储,那么: a) 如何覆盖后退按钮行为,使其在按下后退时

我正在制作一个只有一个活动的应用程序。当我按下“主页”或“最近使用的应用”按钮时,状态已正确保存,当我返回应用时,所有内容都已保存。当我按下后退按钮并稍后返回应用程序时,
savedInstanceState
onCreate
中始终为空。我已经读到,当按下后退按钮时,状态不会被保存,但考虑到后退和主页按钮同样有效,在用户尝试返回到他们正在做的事情之前,在我的情况下,这似乎是不直观的。当按下后退按钮时,是否无法保存状态

如果我必须进行一些持久存储,那么:

a) 如何覆盖后退按钮行为,使其在按下后退时保存应用程序,以及


b) 我能否以某种方式持续保存一个包,这样我就不必为了保存状态而复制代码?

您要搜索的是我想看看它。它将帮助您解决问题

我可能错了,但我的理解是,savedInstanceState仅在您更改设备方向时保存数据,但只要单击“上一步”按钮,您的活动就会被销毁。为了在按下“上一步”按钮时保存数据,您可以使用SharePreferences或singleton类保存数据。

首先查看活动生命周期。听起来你需要覆盖ondestroy方法并保存你的东西。你可以使用捆绑包来处理简单的东西,但复杂的东西最好使用包裹。
oncreate方法应该检查stuff,看看它是否为null,退出应用程序实际上会终止应用程序。使用家庭或最近的应用程序只会隐藏应用程序。如果你想记住你的数据,你就必须存储数据。但是,当我只是隐藏应用程序时,我必须将保存到包中的所有代码复制到包中。后退按钮不会隐藏它。。。您在onrestoreinstancestate中还原捆绑包,并在onCreate中加载共享引用。。。oncreate只在onrestoreinstancestate被调用一次时才被调用。在恢复应用程序时也始终被调用。我不担心效率低下或工作浪费,我担心的是在多个地方有本质相同的代码。这是一种糟糕的编程实践,会导致bug。看看Android的生命周期,这就是它的工作原理。。。或者,您可以删除捆绑包并在onresume方法中加载存储在SharedReferences中的值,这样,在恢复活动或首次创建活动时,都会加载这些值