Android调用finish()时如何保存和恢复Activity的状态?

时间:2012-07-10 04:36:20

标签: android android-activity state

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

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

我可以将活动A推送到Android中的堆栈之类,然后将其弹出来吗?有谁知道如何实现这个目标?

4 个答案:

答案 0 :(得分:3)

点击后退按钮不要叫完。

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

答案 1 :(得分:0)

finish()的重点是说你的活动已“完成并应该关闭”。如果您还没有完成,请不要致电finish()

答案 2 :(得分:0)

当你从活动A转到活动B时,Android不会杀死活动A.活动A仍然存在于后台。但是,如果Android需要内存,它可能随时被杀死。

要保存活动的状态,您必须手动执行此操作。

这是一个类似的问题,答案很好:Saving Android Activity state using Save Instance State

答案 3 :(得分:0)

如果您想完成活动,然后再次启动它只是为了加载一些新配置,您可以调用活动的重新创建()方法,而不是调用完成() 。调用recreate()将调用onSaveInstanceState()和onRestoreInstanceState(),帮助您恢复以前的配置..

您可以查看此答案以获取更多详细信息:How do I restart an Android Activity