2013-10-23 30 views
10

我想知道在所有活动onBackPressed()finish()函数中实施是否是个好主意?或者它不实际,甚至不好做?Android OnBackPressed finish()?

如果没有,除了在每个活动中显示和输入SingleInstance(我认为它使应用程序更慢)之外,还有哪些其他选项?

谢谢。

+1

'onBackPressed()'自动活动完成,直到我们不覆盖它。 – SilentKiller

+0

SilentKiller是对的,[后面的堆栈作为“后进先出”](http://developer.android.com/guide/components/tasks-and-back-stack.html) – AlexBcn

+0

@SilentKiller,didn我不知道。我很感激。 – user2902515

回答

10

首先硬件后退按钮本身调用finish()方法。如果您在您的活动中定义onBackPressed()方法,则意味着您正在覆盖backButton的默认行为,因为按下后退按钮时会调用onBackPressed()方法。

现在是否创建单个活动实例取决于您的要求,例如,初始屏幕可以由单个实例组成,因为它在应用程序启动期间仅会显示一次,并且不需要将此活动保留在背面堆栈中。您要经常使用的活动不应该是单一的实例,否则一个罕见的活动可能会成为一个单一的实例。

请通过Back Stack Documentation了解完整信息。

标准和'singleTop'可以实例化多个活动实例,实例将保持在同一个任务中。 对于'singleTask'或'singleInstance',活动类使用单例模式,该实例将成为新任务的根活动。

+0

有些人在打开Intents时使用标志。这是一个很好的方式来做到这一点?如果是这样,哪一个标志应该适应我的需求?我不想打开多个活动,我经常看到他们留在后台..消耗内存:\ – user2902515

+1

完全取决于您的要求。默认情况下,除非您使用标记手动删除它们,否则处理器会将其从堆栈中删除。 –

+0

我试图在文档中找到正确的标志,但我无法弄清楚。我只想要标志清除活动,如果它已经打开。我所看到的只是一面旗帜,它在开启新的活动时会清除所有的活动。 – user2902515

0

这取决于您的应用需求,因为我们经常使用finish() ,但您也可以管理android的生命周期。

更好使用暂停和恢复方法。