Android重建机制是什么

Yang 294

在Android中,当Activity被销毁时,系统会根据情况来保存Activity的状态,以便在需要时恢复它们。这个过程被称为重建机制。当由系统发起而非人为手动关闭Activity的时候,Activity有可能在未来的某个时机恢复重建。

一、Android重建机制

在Android中,当Activity被销毁时,系统会根据情况来保存Activity的状态,以便在需要时恢复它们。这个过程被称为重建机制。当由系统发起而非人为手动关闭Activity的时候,Activity有可能在未来的某个时机恢复重建。Android系统提供了两套机制,用以保存和恢复界面状态。这两套机制分别是Save-Restore InstanceState机制和RetainNonConfiguration机制。

二、什么时候会重建

并不是任何Activity的销毁行为都会触发Activity数据的保存。只有销毁行为是被系统发起的并且今后有可能恢复的时候才会触发。

1、不会触发重建机制

按返回按键。比如,A Actvivity启动B Activity,BActivity中返回不会调用BActivity的OnSaveInstanceState()方法

最近使用屏幕中滑动关闭 Activity。

从设置中【停止】应用

完成某种“完成”操作,开发者通过调用Activity #finish()方法完成

2、有可能会触发重建机制的

触发恢复重建机制就是两大类

系统回收内存时kill掉。

横竖屏切换和语言切换等配置发生变化时kill重建。(可以通过 Activity #isChangingConfigurations()方法判断是否为配置更改发生的)。

当由系统发起而非人为手动关闭Activity的时候,Activity有可能在未来的某个时机恢复重建。Android系统提供了两套机制,用以保存和恢复界面状态。

这两套机制我分别可以给其取名为 Save-Restore InstanceState机制和RetainNonConfiguration机制。

延伸阅读

1、Save-Restore InstanceState机制

Save-Restore InstanceState机制的初衷是保存界面的一些瞬时状态,比如ListView滑动的位置、ViewPager的position一些TextView的文本内容。保证用户进入新建Activity的时候能尽快的看到界面状态的恢复。

Save-Restore InstanceState是一些比较轻量级的数据,因为保存过程需要经历数据的序列化和反序列化。

对于开发者时机操作层面来说,Save-Restore InstanceState机制的核心就是Activity中 onSaveInstanceState() 、onCreate()和onRestoreInstanceState()这三个回调方法。

2、配置改变发生的重建

当如横竖屏的切换、语言切换等配置发生改变时也会触发Activity的重建。这种由配置发生改变而导致的Activity重建除了会触发Save-Restore InstanceState机制之外也会触发RetainNonConfigurationInstance机制。

RetainNonConfigurationInstance机制的核心是Activity中onRetainNonConfigurationInstance()和 getLastNonConfigurationInstance(),这两个回调方法也会回调onRetainNonConfigurationInstance()方法。

回复

我来回复
  • 暂无回复内容

站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部