天天看点

【Android 应用开发】Activity 状态保存 OnSaveInstanceState參数解析

作者 : 韩曙亮

一. 相关方法简单介绍

activity 创建时回调 : 该方法会自己主动传入一个 bundle 对象, 该 bundle 对象就是上次被系统销毁时在 onsaveinstancestate 或者 onrestoreinstancestate 中保存的数据;

-- 注意 : 仅仅有是系统自己主动回收的时候才会保存 bundle 对象数据;

-- bundle 对象来源 : oncreate() 方法中的 bundle 对象參数, 是在 onsaveinstance() 或者 onrestoreinstancestate() 方法中保存的 bundle 对象;

.

outstate 參数作用 : 

-- 数据保存 : activity 声明周期结束的时候, 须要保存 activity 状态的时候, 会将要保存的数据使用键值对的形式 保存在 bundle 对象中;

-- 恢复数据 : 在 activity 的 oncreate()方法 创建 activity 的时候会传入一个 bundle 对象, 这个 bundle 对象就是这个 outstate 參数;

调用时机 : activity easy被销毁的时候调用, 注意是easy被销毁, 也可能没有销毁就调用了;

-- 按下home键 : activity 进入了后台, 此时会调用该方法;

-- 按下电源键 : 屏幕关闭, activity 进入后台;

-- 启动其他 activity : activity 被压入了任务栈的栈底;

-- 横竖屏切换 : 会销毁当前 activity 并又一次创建;

onsaveinstancestate方法调用注意事项 : 

-- 用户主动销毁不会调用 : 当用户点击回退键 或者 调用了 finish() 方法, 不会调用该方法;

-- 调用时机不固定 : 该方法一定是在 onstop() 方法之前调用, 可是不确定是在 onpause() 方法之前 还是 之后调用;

-- 布局中组件状态存储 : 每一个组件都 实现了 onsaveinstance() 方法, 在调用函数的时候, 会自己主动保存组件的状态, 注意, 仅仅有有 id 的组件才会保存;

-- 关于默认的 super.onsaveinstancestate(outstate) : 该默认的方法是实现 组件状态保存的;

方法回调时机 : 在 activity 被系统销毁之后 恢复 activity 时被调用, 仅仅有销毁了之后重建的时候才调用, 假设内存充足, 系统没有销毁这个 activity, 就不须要调用;

-- bundle 对象传递 : 该方法保存的 bundle 对象在 activity 恢复的时候也会通过參数传递到 oncreate() 方法中;

-- 位于生命周期位置吧 : 该方法在 onresume() 方法之前保存信息; 

二 代码演示样例

activity 主要代码 : 

执行结果 : 在执行的过程中 旋转屏幕;

作者 : 韩曙亮

继续阅读