Android保存Activity销毁而丢失的数据

本文探讨了Android活动中数据丢失的问题,特别是在活动被回收时。文章介绍了两种保存数据的方法:1) 使用`onSaveInstanceState()`来保存重要临时数据,便于在活动重建时恢复;2) 利用`onRetainNonConfigurationInstance()`保存非配置变化相关的数据,如图片Uri,避免横竖屏切换导致的数据丢失。通过这两个方法,可以确保活动在不同状态下数据的连续性。
摘要由CSDN通过智能技术生成

安卓中,活动存在四种状态,分别是 运行状态、暂停状态、停止状态和销毁状态,除了运行状态之外,当系统内存不足的情况下,其他三种状态都有可能被回收,这样就会出现数据丢失的情况,那么如何在活动被回收之前保存数据呢,今天介绍两种方式(据说有四种,其他两种不知道以后学了在更新)。

第一种:使用onSaveInstanceState()方法:

在任务栈中,B处于顶端,A处于B下面,如果A被回收了,那么B返回后,依然会显示A,只是此时的A是重新创建出来的活动,也就是说调用了A的onCreate方法创建出来的新的活动,因此,A之前的所有数据也就销毁了,但是我们可以利用Activity提供的onSaveInstanceState方法:

   protected void onSaveInstanceState(Bundle outState) {
        outState.putBundle(WINDOW_HIERARCHY_TAG, mWindow.saveHierarchyState());
        Parcelable p = mFragments.saveAllState();
        if (p != null) {
            outState.putParcelable(FRAGMENTS_TAG, p);
        }
        getApplic

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值