StartActivity和多个实例

时间:2012-01-08 14:10:17

标签: android back

我对活动的运作方式感到有些困惑。如果我通过按一个按钮进行StartActivity(),然后按“返回”按钮返回到原始活动,然后再次按下按钮以执行相同的StartActivity(),是否有两个实例新活动?我知道每次都会调用onCreate(),所以第一个实例是孤儿(大概最终是Garbage Collected)?

我是否应始终确保调用finish()(通过“后退”按钮),为了安全起见?我不确定这里的协议是什么。

2 个答案:

答案 0 :(得分:0)

来自Android开发网站(source):

  

应用程序通常由多个彼此松散绑定的活动组成。通常,应用程序中的一个活动被指定为“主要”活动,该活动在首次启动应用程序时呈现给用户。然后,每个活动可以启动另一个活动以执行不同的操作。 每次新活动开始时,前一个活动都会停止,但系统会将活动保留在堆栈中(“后堆栈”)。当一个新的活动开始时,它会被推到后面的堆栈上并引起用户的注意。后端堆栈遵循基本的“后进先出”队列机制,因此,当用户完成当前活动并按下BACK键时,它将从堆栈中弹出(并销毁)并恢复先前的活动。 (后面的堆栈将在“任务和后退堆栈”文档中进行更多讨论。)

(由我加粗)

这个页面特别有趣,可以详细了解它的工作方式:

Tasks and back stack

答案 1 :(得分:0)

正如文档中所述,

  

public void onBackPressed ()自:API等级5

     

当活动检测到用户按下背面时调用   键。默认实现只完成当前活动,   但你可以覆盖它来做任何你想做的事。

按下后退键的默认实现会将finish()调用到当前活动