Android按下返回键MainActivity未销毁,是否为新特性?
问题解答
这并不是Android的新特性,而是系统后台进程内存优化策略导致的常规现象,在API 33及更早版本中就存在这类逻辑:
- 按下返回键退出Activity时,系统只会依次调用
onPause()和onStop()方法,不会立刻触发onDestroy()。此时Activity实例会被保留在内存中,局部变量也不会被清除——这么做是为了如果用户后续重新打开应用,系统能快速恢复Activity,提升启动流畅度。 - 只有当系统面临内存压力(比如后台运行了大量高内存应用)时,才会销毁该Activity实例并调用
onDestroy(),同时回收相关内存资源。 - 如果你需要在Activity不可见时执行资源清理操作,应该把逻辑放在
onStop()或onPause()中,不要依赖onDestroy()——因为它的调用是不确定的,系统有可能永远不会触发这个方法。
你可以通过以下方式验证:打开多个占用内存较高的应用后,再回到你的应用,此时原MainActivity大概率已经被销毁,重新打开时会触发onCreate()方法。
内容的提问来源于stack exchange,提问作者Bekzad Nasirakhunov
相关产品推荐
相关产品推荐

