按下后退键的不同行为

时间:2012-06-08 11:00:04

标签: android android-activity

我有四个应用程序循环的活动。第一个获取大量数据,所以我不希望这样做多次。事情是,如果用户在最后一个活动上按下键,我想返回第一个活动而不重新加载活动。我目前正在考虑使用startActivityForResult方法并完成前两个方法,但可能有更好的解决方案?

情景:

enter image description here

2 个答案:

答案 0 :(得分:2)

Hasslarn,

您必须首先理解的是,您对于是否重新加载活动几乎没有选择。这是由系统决定的(很大程度上)。话虽如此,你可以做很多事情来限制系统杀死Activity的欲望。此外,您可以使用许多工具来限制这种可能的关闭的影响

  1. 完成每个子活动,因为它变得不重要。这将释放资源,降低摆脱未使用活动的需要(甚至是暂时的)。

  2. 找到一种简单而聪明的方法来限制负载。

  3. 根据提供的信息,您提出的解决方案是实现这两者的可行方法。但是,我会问“在活动C打开时,活动B是否需要处于活动状态?”如果没有,您可能需要执行以下操作:

    1. startActivityForResult(活动B)

    2. 活动B完成后,将结果发送回活动A和startActivityForResult(活动C)

    3. 最后,当活动C完成后,您可以启动StartActivityForResult(活动D)并且返回将毫不费力地工作,您将不必关闭其他活动。

    4. 此外,如果按Back on Activity C,则可以向活动A提供取消的结果,如果您愿意,可以强制重新启动活动B.根据活动B所需的处理程序,这可能对您的应用程序没有任何麻烦。

      无论您如何处理此问题,我建议您找到一种方法来缓存此数据,以便onResume(),您可以根据需要快速重新加载。这是因为没有办法确保您的原始活动不会被释放以让其他活动让路。

      希望这有帮助,

      FuzzicalLogic

答案 1 :(得分:1)

尝试使用:

    Intent a = new Intent(this,A.class);
    a.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    startActivity(a);
    return true;

活动A将被重新排序到前面,而不创建新实例。如果你想通过意图传递额外的东西,你可以在活动A中的onNewIntent(意图)中获得意图额外的东西。