调用onDestroy方法时,Activity属性在两种场景下的变化?
Activity调用onDestroy时属性的销毁逻辑
当Activity的onDestroy被调用时,分两种场景,属性的处理逻辑完全不同:
一、配置变更触发的onDestroy
- 系统会销毁当前Activity实例,但会自动保存视图的基础状态(比如EditText的输入内容、ListView的滚动位置)
- 你自定义的成员变量(比如普通字符串、自定义对象属性)会跟着旧实例一起被销毁;不过可以通过
onSaveInstanceState方法提前把需要保留的属性值存入Bundle,在新Activity实例的onCreate中取出恢复 - 总结:旧实例的属性全部销毁,新实例需手动恢复才能拿到之前的属性值
二、Activity正在结束触发的onDestroy
- 这种情况是Activity真正走向终结(比如用户按返回键、调用
finish()、系统因内存不足强制回收),整个Activity实例会被彻底销毁 - 所有属性(不管是系统控件状态还是自定义变量)都会随着实例被回收,不会被保留;如果要留存数据,必须自己提前做持久化处理(比如存到SharedPreferences、本地数据库或文件)
内容的提问来源于stack exchange,提问作者Amir hossein bagheri
相关产品推荐
相关产品推荐

