繁体   English   中英

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

[英]Why should we call finish() method after sending an intent?

我刚在

Intent wizard = new Intent();
wizard.setClass(this, A.class);
wizard.putExtra("Domain", A.getInstance().B);
startActivity(wizard);
finish();

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

finish()活动并应关闭时调用此函数,启动活动时调用finish()将关闭当前活动,并且在Activity堆栈中将不可用。

在此处输入图片说明

finish(); 

finish用于关闭当前活动。就像您正在将数据发送到其他活动/打开新活动并关闭当前活动一样。

您不是必须要这样做的。通常,只有当人们想要破坏启动意图的活动时,人们才这样做,但这绝对不是您的情况……

在android的生命周期中,您将看到:

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

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

在此处输入图片说明

让我们用几个引号来理解它

完成 - 完成活动并应将其关闭时调用此方法。 通过onActivityResult()将ActivityResult传播回发起您的人


onDestroy() -在活动销毁之前收到的最后一个呼叫。 发生这种情况的原因可能是活动即将结束( 有人在其上执行finish() ,或者因为系统暂时销毁了此活动实例以节省空间。

当您在活动上调用finish()时,将执行紧随onDestroy()的方法。例如: onPause() > onStop() >和onDestroy()它们可能与您调用finish()的地方不同!

onDestroy()用于最终清理-释放您可以自己使用的资源,关闭打开的连接,读取器,写入器等。 如果您不覆盖它,则系统将执行它必须执行的操作。

它告诉您要完成所选择的活动所以它西港岛线调用系统onDestroy()完成该活动后。( 但是,这并不意味着onDestroy()只得到由完成()调用时,系统能做到这一点时,它的运行活动发送到后台状态后资源不足

此外,还有一些更有趣的问题,例如调用了Activity.finish(),但活动仍保持加载在您可能喜欢的内存

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM