我有四个应用程序循环的活动。第一个获取大量数据,所以我不希望这样做多次。事情是,如果用户在最后一个活动上按下键,我想返回第一个活动而不重新加载活动。我目前正在考虑使用startActivityForResult方法并完成前两个方法,但可能有更好的解决方案?
情景:
答案 0 :(得分:2)
Hasslarn,
您必须首先理解的是,您对于是否重新加载活动几乎没有选择。这是由系统决定的(很大程度上)。话虽如此,你可以做很多事情来限制系统杀死Activity的欲望。此外,您可以使用许多工具来限制这种可能的关闭的影响
完成每个子活动,因为它变得不重要。这将释放资源,降低摆脱未使用活动的需要(甚至是暂时的)。
找到一种简单而聪明的方法来限制负载。
根据提供的信息,您提出的解决方案是实现这两者的可行方法。但是,我会问“在活动C打开时,活动B是否需要处于活动状态?”如果没有,您可能需要执行以下操作:
startActivityForResult(活动B)
活动B完成后,将结果发送回活动A和startActivityForResult(活动C)
最后,当活动C完成后,您可以启动StartActivityForResult(活动D)并且返回将毫不费力地工作,您将不必关闭其他活动。
此外,如果按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(意图)中获得意图额外的东西。