0

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

设想:

在此处输入图像描述

4

2 回答 2

2

哈斯兰,

您必须了解的第一件事是,对于是否重新加载 Activity,您几乎没有选择余地。这是由系统(很大程度上)决定的。话虽如此,您可以做很多事情来限制系统杀死 Activity 的愿望。此外,您可以使用多种工具来限制此类可能关闭的影响

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

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

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

  1. startActivityForResult(活动 B)

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

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

此外,如果您在活动 C 上按返回,您可以根据需要向活动 A 提供取消的结果,强制重新启动活动 B。根据 Activity B 所需的处理,这对您的应用程序来说可能一点也不麻烦。

不管你如何处理这个,我建议找到一种方法来缓存这些数据,例如 onResume(),如果需要,你可以快速重新加载。这是因为没有办法确保您的原始 Activity 不会被释放为其他 Activity 让路。

希望这可以帮助,

模糊逻辑

于 2012-06-08T11:19:42.743 回答
1

尝试使用这个:

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

活动 A 将被重新排序到前面,而不创建新实例。如果要通过 intent 传递 extras,可以在 Activity A 的 onNewIntent(intent) 中获取 intent extras。

于 2012-06-08T11:09:21.443 回答