Android如何在调用finish()时保存和恢复活动状态



在Android中,从活动A开始,如果我启动新的活动B,Android将自动保存活动A的所有状态。因此,当我从活动B点击返回或调用finish()时,活动A将恢复到我启动活动B时的状态(例如:活动A中ScrollView的位置,或ProgressBar的值)。在活动A中,我有一个ProgressBar,显示某个任务的进度,然后如果我从活动B返回,ProgressBar将恢复并继续运行。

现在我想要的是,在活动A中,我将调用finish()。我如何像Android那样保存活动A的所有状态(如上所述,包括ProgressBar),这样当我再次启动活动A时,我可以恢复调用finish()之前的所有状态,并且我的ProgressBar继续运行?

我可以在Android中将活动A推送到类似堆栈的位置,然后将其弹出吗?有人知道如何做到这一点吗?

单击后退按钮时不要调用finish。

而是调用方法"moveTaskToBack(false)"。这将"最小化"您的应用程序。下次打开应用程序时,应用程序将以以前的状态打开。

finish()的全部意义是说您的"活动"已经"完成,应该关闭"。如果你还没有完成,就不要打电话给finish()

当你从活动A转到活动B时,Android不会杀死活动A。活动A仍然存在于后台。然而,如果安卓系统需要内存,它随时都可能被杀死。

要保存活动的状态,必须手动执行。

这里有一个类似的问题,答案很好:使用保存实例状态保存Android活动状态

如果你想完成你的活动,然后再次启动它,只是为了加载一些新的配置,你可以调用活动的recreate()方法,而不是调用finish()。调用recreate()将调用onSaveInstanceState()和onRestoreInstanceState(。。

您可以查看此答案以了解更多详细信息:如何重新启动安卓活动

最新更新