android activity缓存方法

本文介绍了Android中通过onSaveInstanceState()和onRestoreInstanceState()方法来临时保存和恢复Activity的状态和数据。onSaveInstanceState()通常在Activity停止前调用,而onRestoreInstanceState()则在Activity重新启动后调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在android 系统中提供了临时保存和恢复activity状态和数据的方法
一、onSaveInstanceState()
   Activity中的onSaveInstanceState()回调方法用于保存临时数据和状态,这个方法会在activity的onStop()方法   
   之前调用。在onSaveInstanceState()方法中有个参数Bundle,可以通过,putInt()、putString()等方法传入需要
   保存的数据和状态。如下:
@Override  
    protected void onSaveInstanceState(Bundle outState) {  
        //注意:先保存数据,然后调用父类方法
        outState.putString("data","temp data");  
        super.onSaveInstanceState(outState);  

    }  
二、onRestoreInstanceState()
     Activity中的onRestoreInstanceState()回调方法用于恢复数据和状态,这个方法会在activity的onstart()
     方法之后调用。 在onRestoreInstanceState()方法中有个参数Bundle,bundle会传递到activity的onCreate()
     中,所以可以选择在onCreate方法中做数据和状态还原。如下:
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        //注意:先调用父类方法,再取出自己保存的数据
        String tempData= savedInstanceState.getString("data");
}
//在activity的onCreate()也可以恢复数据
  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //这里,当Acivity第一次被创建的时候为空
        //所以我们需要判断一下
        if( savedInstanceState != null ){
            savedInstanceState.getString("anAnt");
        }
    }
三、onSaveInstanceState() 执行情况
    1. 用户按下Home键
    2. 用户关闭电源键
    3. 用户从最近应用中选择其他的应用
    4. 从当前的activity跳到一个新的activity
    5. 手机横竖屏切换(不指定configchange属性)
    6. 手机系统设置的改变:如语言改变、键盘弹出
四、总结
      1.在手机内存不足等原因,actvity未经系统许可异常销毁并且需要重新创建时,onSaveInstanceState()才有会
      调用
      2.onSaveInstanceState()方法和onRestoreInstanceState()方法不一定”是成对的被调用的
      3.onSaveInstanceState()方法调用不确定性,所以只适合保存临时数据, 比如UI控件的状态, 成员变量的值等,
      不能用来保存持久化的数据。持久化数据应该当用户离开当前的 activity时,在 onPause() 中保存,比如将数据
      保存到数据库或文件中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值