其他分享
首页 > 其他分享> > 在Android中启动新活动后调用finish()是个好主意吗?

在Android中启动新活动后调用finish()是个好主意吗?

作者:互联网

喜欢:

startActivity(intent);
finish();

如果没有显式调用finish(),则不会为前一个Activity调用onDestroy(),并且我的内存不足(OutOfMemory异常).

那么,明确调用finish()以防止OutOfMemory异常是一个好主意吗?

解决方法:

当您启动新活动时,当前活动将被推送到当前任务的后台堆栈. (您可以通过标志和/或清单更改此行为,但这是默认行为.)当用户按下后退函数时,顶部活动结束并弹出堆栈.结果是用户看到应用程序返回到上一个活动.

在开始新活动后调用finish()完全没问题.结果将是当前活动(不再位于堆栈顶部,因为您刚开始新的活动)将从堆栈中删除.然后,当用户按下Back时,它将转到后台堆栈上的上一个活动(如果堆栈为空,则退出应用程序).

如果你在活动A和B之间来回反复,总是开始一个新的并且从不调用finish(),这会导致一个OOM异常,因为堆栈填满了每个活动的实例.

您可以在指南主题Tasks and Back Stack中阅读有关此内容的更多信息.它还介绍了如何正确处理活动之间的循环.

标签:activity-finish,android,android-intent,out-of-memory
来源: https://codeday.me/bug/20191005/1854728.html