2014-02-16 216 views
0

我有3项活动: MainActivity,MovieActivity和ActorActivity。Android活动来回切换

我是新来的Android,我试图了解如何通过确保我不开始n个活动并耗尽内存来实现每个活动之间的转换。

下面是这种情况,用户可以通过去:

MainActivity(列表电影)---> MovieActivity开始上点击一个电影和演员显示,如果你点击一个演员---> ActorActivity开始。

现在,在演员活动中,我显示演员出演的电影列表,因此用户可能会回到他来到当前演员活动的同一部电影。而且这可以持续不断地来回或基本上在电影和演员活动之间进行切换。

我已经将MovieActivity和ActorActivity的父级活动设置为MainActivity,因此随时按下UP按钮将列出所有电影。

处理这种情况的最佳方法是什么?当用户点击返回按钮时,我不确定如果后面的轨迹是MovieA < - > ActorA来回像10次那样理想的行为。

回答

0

您可以在后退按钮上使用以下代码。

@Override 
     public void onBackPressed() { 

      Intent i = new Intent(currentactivity, targaetactivity); 
      startActivity(i); 
     } 
0

您可以手动存储历史记录,并找到有意义的等待返回,例如,回到前一个屏幕,除非你有MovieA/ActorA/MovieB/ActorB的循环。然后手动实现onBackPressed方法。 通过这种方式,当您切换到另一个时,您总是可以完成活动,而您只需将堆栈中的活动参数存储起来。

0

当您转换到新的详细信息页面并将其作为额外的新活动传递给新活动时,您可以跟踪以前的细节(即:从Actor - > Movie时,您应该将Actor的名称传入意图额外)。然后,如果用户想要从电影页面转换到演员页面,您可以比较它是否与前一个演员相同(在额外中传递的演员)。如果是这样,您可以拨打finish(),而不是启动一个新的活动,这会将用户返回到上一个Actor详细信息页面。

通过这种方式,您将防止产生无意义的循环(A-> B-> A-> B)位仍然允许用户从A-> B-> D-> E-> T-> Q if他想要。

+0

感谢大卫,这似乎是合乎逻辑的,可能是我走的最佳途径。我会执行它,看看它是如何发展。在相关说明中,可以继续使用意向开始新的活动,而不是消耗越来越多的内存吗?有没有一种简单的方法可以让我随着时间检查我的应用程序的内存使用情况?例如,正如你所提到的,如果用户进行A-> B-> D-> E-> T-> Q说100个关卡,那么后面的堆栈会保持如此深的关卡吗?(例如,如果我打回100次我应该回到MainActivity A)。我应该记住任何性能考虑因素?感谢您的帮助! – falc0nit3

+0

每次创建新的活动实例时,都会消耗内存。在很大程度上取决于你如何编程它以及你在视图中拥有什么。您可以使用'Debug'类中的各种方法来跟踪您的内存使用情况。是的,后台堆栈会跟踪100个级别或更多的活动,但在这种情况下,您最终可能会消耗太多内存,并且您的应用只会崩溃。你可能更有意义地自己管理这个“后退堆栈”,而不是继续无限地创建新的Activity实例。 –