[英]Is it a good idea to call finish() after starting a new Activity in Android?
喜欢:
startActivity(intent);
finish();
如果没有finish() explicitly, onDestroy()
调用finish() explicitly, onDestroy()
则不会为前一个Activity调用finish() explicitly, onDestroy()
,并且我的内存不足(OutOfMemory Exception).
那么, finish() explicitly to prevent OutOfMemory Exception?
调用finish() explicitly to prevent OutOfMemory Exception?
是一个好主意finish() explicitly to prevent OutOfMemory Exception?
当您启动新活动时,当前活动将被推送到当前任务的后台堆栈。 (您可以通过标志和/或清单更改此行为,但这是默认行为。)当用户按下后退函数时,顶部活动结束并弹出堆栈。 结果是用户看到应用程序返回到上一个活动。
在开始新活动后调用finish()
完全没问题。 结果将是当前活动(不再位于堆栈顶部,因为您刚开始新的活动)将从堆栈中删除。 然后,当用户按下Back时,它将转到后台堆栈上的上一个活动(如果堆栈为空,则退出应用程序)。
如果你在活动A和B之间来回反复,总是开始一个新的并且从不调用finish()
,这会导致一个OOM异常,因为堆栈填满了每个活动的实例。
您可以在指南主题“ 任务”和“后台堆栈”中阅读更多相关信息。 它还描述了如何正确处理活动之间的循环。
如果您不需要该Activity
的实例,这样做很好。 因此,当你按下下一个Activity
知道你不会回到这个,但是那个Activity
所在的堆栈下面的东西,或者如果没有更多活动的话。
但是,我不确定这是你获得OOM
异常的原因,你应该知道它来自哪里。 如果您使用的是Bitmap
则可能导致异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.