为什么我们要在发送意图后调用finish()方法?

时间:2017-01-15 10:06:56

标签: java android android-intent

我刚刚在

中看到了这段代码
Intent wizard = new Intent();
wizard.setClass(this, A.class);
wizard.putExtra("Domain", A.getInstance().B);
startActivity(wizard);
finish();

我们为什么要在这里调用finish()方法? 它的目的是什么?

4 个答案:

答案 0 :(得分:3)

path当您的活动完成并且应该关闭时调用此选项,当启动活动时,调用div { width: 100%; height: 0; padding-bottom: 56%; /* Change this till it fits the dimensions of your video */ position: relative; } div iframe { width: 100%; height: 100%; position: absolute; display: block; top: 0; left: 0; } 将关闭当前活动,并且它将无法在finish()堆栈中使用。

enter image description here

答案 1 :(得分:3)

finish(); 

结束用于关闭当前活动。就像您将数据发送到其他活动/打开新活动并关闭当前活动。

答案 2 :(得分:2)

你不是必须被迫这样做...... 通常人们会这样做,当且仅当想要破坏启动意图的活动,但那不一定是你的情况......

在android的生命周期中你会看到:

假设您的活动可见,则调用 finish()方法将调用

onPause(),然后是 onStop(),最后是 onDestroy()

enter image description here

答案 3 :(得分:2)

让我们用很少的引语来理解它

  

完成 - 在您的活动完成后调用此应该关闭。 ActivityResult会传播回给你的人   通过onActivityResult()

  

onDestroy() - 您在活动之前收到的最终通话   销毁。这可能是因为活动正在结束   (有人称之为完成(),或因为系统是暂时的   破坏活动的这个实例以节省空间。

当您在某项活动上致电finish()时,会执行onDestroy()后面的方法。例如:onPause()> onStop()>和onDestroy()它们可能与您拨打finish()的地方不同!

onDestroy()用于最终清理 - 释放您可以自己拥有的资源,关闭开放式连接,读者,编写者等。如果你不覆盖它,系统会做它所拥有的。

它告知系统您要完成所选活动,以便在完成活动后调用onDestroy()。(意味着{{1}只有被finish()调用,系统才能在活动被发送到后台状态后耗尽资源

还有更多有趣的问题,例如你可能想要的Activity.finish() called but activity stays loaded in memory