我对活动的运作方式感到有些困惑。如果我通过按一个按钮进行StartActivity()
,然后按“返回”按钮返回到原始活动,然后再次按下按钮以执行相同的StartActivity()
,是否有两个实例新活动?我知道每次都会调用onCreate()
,所以第一个实例是孤儿(大概最终是Garbage Collected)?
我是否应始终确保调用finish()
(通过“后退”按钮),为了安全起见?我不确定这里的协议是什么。
答案 0 :(得分:0)
来自Android开发网站(source):
应用程序通常由多个彼此松散绑定的活动组成。通常,应用程序中的一个活动被指定为“主要”活动,该活动在首次启动应用程序时呈现给用户。然后,每个活动可以启动另一个活动以执行不同的操作。 每次新活动开始时,前一个活动都会停止,但系统会将活动保留在堆栈中(“后堆栈”)。当一个新的活动开始时,它会被推到后面的堆栈上并引起用户的注意。后端堆栈遵循基本的“后进先出”队列机制,因此,当用户完成当前活动并按下BACK键时,它将从堆栈中弹出(并销毁)并恢复先前的活动。 (后面的堆栈将在“任务和后退堆栈”文档中进行更多讨论。)
(由我加粗)
这个页面特别有趣,可以详细了解它的工作方式:
答案 1 :(得分:0)
正如文档中所述,
public void onBackPressed ()
自:API等级5当活动检测到用户按下背面时调用 键。默认实现只完成当前活动, 但你可以覆盖它来做任何你想做的事。
按下后退键的默认实现会将finish()
调用到当前活动