在两个Android活动之间来回切换的最佳做法

时间:2016-04-07 23:19:26

标签: java android android-activity memory-management

我正在尝试找出在两个Android活动之间切换的最佳做法。关于SO的几个问题提到了这一点,但似乎没有一个问题涉及不同方法的记忆或速度影响。到目前为止,我已经遇到过这些方法(为了清楚起见,使用活动名称a和b):

  1. 在活动a中,当用户需要移动到活动b时,创建一个指向活动b的新Intent,反之亦然。
  2. 2.在活动a中使用startActivityForResult,指向活动b,然后在完成后返回结果。

    3.使用指向活动a的新Intent从活动b返回到活动a时使用Intent标志ACTIVITY_CLEAR_TOP。

    任何人都可以澄清上述方法的内存和速度影响/他们所知道的任何其他方法,并建议使用最好的方法吗?

1 个答案:

答案 0 :(得分:3)

<强> 1。在活动a中,当用户需要移动到活动b时,创建指向活动b的新Intent,反之亦然。

您将创建将添加到Backstack的活动的多个实例。因此,根据您应用的性质,我建议您不要这样做。相反,你可以使用片段并在fragmentmanager的.replace方法之间切换,将片段的两个实例保存在活动中的变量中。

2.在活动a中使用startActivityForResult,指向活动b,然后在完成后返回结果。

如果您只是希望您的活动B执行某些操作并将某些内容发送回活动A,那么您可以执行此操作,并且每个实例总是只有1个实例,这是一个很好的方法。

3.使用指向活动a的新Intent从活动b返回活动a时使用Intent标志ACTIVITY_CLEAR_TOP。

对于您的第一个解决方案,这将是一个很好的解决方案。

现在处理这个的最好方法是使用片段,这是我最常用的。

如果您仍然选择使用“活动”,则可以在清单文件中设置以下标记。

android:launchMode=["singleTask" | "singleInstance"]

它们都以相同的方式工作,每个实例只有一个,这样你就不必在意图中设置标记。

希望它有所帮助!

相关问题