混淆了从Android生命周期中使用哪些方法来保存我的应用程序状态

混淆了从Android生命周期中使用哪些方法来保存我的应用程序状态,android,android-lifecycle,Android,Android Lifecycle,我的应用程序有两个布局A和B 在数据库中,用户通过单选按钮选择一些数据。然后,他按下一个按钮进入B布局,并使用此选定变量动态构建一些视图(编辑文本、文本视图和按钮) 在布局A中,我实现了onDestroy()(如果实现onStop(),也会发生同样的情况)来保存用户选择的数据。如果我通过后退或按下home键退出应用程序并将其从task manager中删除,则如果用户再次启动应用程序,用户选择的数据仍将可见 现在,在布局B中,首先我基于布局A的用户选择数据构建视图的第一部分,然后我还有额外的按钮

我的应用程序有两个布局A和B

在数据库中,用户通过单选按钮选择一些数据。然后,他按下一个按钮进入B布局,并使用此选定变量动态构建一些视图(编辑文本、文本视图和按钮)

在布局A中,我实现了onDestroy()(如果实现onStop(),也会发生同样的情况)来保存用户选择的数据。如果我通过后退或按下home键退出应用程序并将其从task manager中删除,则如果用户再次启动应用程序,用户选择的数据仍将可见

现在,在布局B中,首先我基于布局A的用户选择数据构建视图的第一部分,然后我还有额外的按钮,允许用户根据需要向该布局添加和删除尽可能多的视图

现在我的困惑来了。。。。。。。。。。。。。。。。。。。 在用户填写布局B中需要的内容后,返回A或退出应用程序,我想保存在布局B中输入的数据。我知道如何使用SharedReferences保存数据,但我不知道布局B或A需要实现哪些方法来完成我的任务

这正是我想要发生的。。。。。 我所希望的是能够启动应用程序与用户填写的数据布局B。布局A似乎正在工作。如果用户在布局A中选择了相同的数据(意味着一切保持原样),那么我只想使用保存的数据,否则我想用用户的新选择重新启动新布局B

还有一个问题。如果用户从B返回布局A,因为所有内容都已保存在布局A中,所以他可以按下按钮并返回布局B(可能想要更改他/她的选定值,或者只是意外地按下了后退按钮)。我也为布局B实现了onDestroy(),但有一个问题。如果用户不更改布局A中的选择并再次转到布局B,则我保存的所有内容都将立即重建,但如果用户返回A并再次转到B,则不存在,每次都会发生这种情况。。。如果我来回移动,我只会在奇数情况下看到保存的数据,偶数情况下它不在那里


在布局B中,我将所有内容保存在onDestroy()中,然后onCreate()检查布局A的数据是否相同,以便再次重建布局B;否则,布局B将是新的。

onDestroy对于序列化数据来说太晚了。您不知道活动何时被破坏


无论如何。你一定在打电话给活动B。你为什么不把这些值作为附加值传递呢?

你最好使用
onPause()/onResume()
,而不是使用
onDestroy()/onResume()
,因为这些值总是被调用的,但是调用onDestroy()可能会被遗漏

您需要在活动A和B中实现
onPause()


一旦您了解了如何在
onPause()
中可靠地保存首选项,您可以根据应用程序逻辑在不需要保存的数据时继续丢弃保存的数据。

这到底是为了哪个问题?所以,如果我理解正确,最好将需要保存的数据保存在onPause()函数中。然后,我没有在onCreate()中重建我的应用程序,而是使用onResume()?@VaheMusinyan:你说得对!在活动之间切换并不一定每次都重新创建它们,因此onCreate/onDestroy可能会被跳过,但onPause/onRestore会一直被调用。我该怎么处理这个案子?在这种情况下,我可以保持应用程序状态吗(就像主按钮情况一样)?我希望返回按钮可以在不调用onDestroy()的情况下返回。请不要担心
onDestroy()
,在
onPause()
中实现所有需要的功能,它总是在
onDestroy()
之前调用,所以就我所见,没有问题。