如何保存活动的实例?

时间:2012-04-02 11:39:10

标签: android lifecycle android-activity

我是android的新手。我正在开发一个应用程序,其中我有两个活动,比如A和B. 在活动A中我有一些项目的列表视图。我在活动A中有一个按钮,它带我去活动B.在活动B中我有一个搜索栏。

我正在使用搜索栏来过滤活动A的结果。

我在活动B中有两个按钮取消和过滤。

如果用户单击过滤器按钮,则调整搜索栏后,将用户调到活动A并显示过滤器结果。 用户可以在活动A和活动B之间进行游戏。

现在有三个不同的场景可以从活动B回到A.

  1. 按过滤器按钮
  2. 按取消按钮
  3. 按手机的后退按钮
  4. 如果用户按下过滤器按钮,则调整搜索栏后,活动A将重新排序并显示过滤结果。在这里,我想保存活动B的实例,以便从活动A开始,如果用户再次进入活动B,那么我可以显示之前的活动状态B.(我能够做到这一点)

    在第二种情况下,如果用户再次调整搜索栏并按下取消按钮,则活动A正在重新排序。我不想保存活动B的实例,如果用户再次从活动A进入活动B,那么我想要显示以前的活动状态B.(我不知道怎么做?)

    在第三种情况下,如果用户再次调整搜索栏并按下电话的后退按钮,则活动A正在重新排序,但现在如果用户再次从活动A进入活动B,那么活动B正在重新启动我不想要的,这里也是我想要显示以前的活动状态B.(我也没有得到如何做到这一点?)

    我遇到了这个问题。 非常感谢你。

1 个答案:

答案 0 :(得分:0)

您必须考虑每个案例并相应地管理活动生命周期。你这样做很好,问题是如何管理它。所以,第一步是研究这个:

activity and lifecycles

在了解了如何通过android os处理活动的生命周期之后:管理你的第二个活动的生命,以便通过覆盖onPause方法(当你的活动不再被调用时)来保持状态。在应用程序的前面)或者如果你不想保存状态则完成活动(有效地调用onStop方法。

我会用这种方式解决这个问题:

    活动A中的
  • 我使用startActivityForResult调用活动B.这样,当活动B结束时,它的状态不会被保留。因此,在活动B内调用finish()以返回活动A而不保存其状态。
    • 当想要保存活动状态b时,调用活动A以便调用onPause方法并保存状态。

希望这能为你澄清。