onSaveInstanceState方法与onRestoreInstanceState方法的使用

本文详细解释了Android中onSaveInstanceState()和onRestoreInstanceState()方法的作用,它们如何在设备旋转等情况下保存和恢复Activity状态,以及如何在MainActivity示例中正确使用这两个方法以保护用户数据。
摘要由CSDN通过智能技术生成

onSaveInstanceState()方法 是Android中的生命周期方法之一,用于保存活动(Activity)的状态信息,以便在活动被销毁和重新创建时恢复状态。这通常发生在设备旋转、配置更改或系统内存不足时。在 onSaveInstanceState()方法 中,你可以保存关键的活动数据Bundle对象 中( putXXX()方法 )。这个 Bundle 对象将在活动重新创建时传递给 onCreate()方法onRestoreInstanceState()方法 ,以便用于恢复之前保存的状态。

onRestoreInstanceState()方法用于在活动重新创建时恢复之前保存的状态的生命周期方法。当活动由于配置更改(例如屏幕旋转)或其他原因而被销毁并重新创建时,系统会调用 onRestoreInstanceState()方法 ,以便你可以从之前保存的 Bundle对象 获取状态数据并进行恢复( getXXX()方法 )。

屏幕旋转时onCreate()方法会被重新调用,所以会造成部分数据丢失的情况(如EditText填写的字符串),而onRestoreInstanceState()方法也会在此时调用,所以仅在其中一个方法实现数据恢复操作即可。

//例.

public class MainActivity extends AppCompatActivity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //存在数据
        if(savedInstanceState!=null){
            //数据恢复
            String data=savedInstanceState.getString("key_name_data");
            //设置数据...
        }

    }

    //重写onSaveInstanceState方法
    protected void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
        //存储数据
        outState.putString("key_name_data","data");
    }

    //重写onRestoreInstanceState方法
    protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        //存在数据
        if(savedInstanceState!=null){
            //数据恢复
            String data=savedInstanceState.getString("key_name_data");
            //设置数据...
        }
    }
    
}

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在下嗷呜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值