[Android学习之路 一]带有临时变量的activity被回收了,怎么找回临时变量?

[Android学习之路 一]带有临时变量的activity被回收了,怎么找回临时变量?

问题

  • 找回已被回收activity存储的临时变量

场景想象

  • 在活动A的基础上启动了活动B,活动A进入了停止状态。由于内存不足,活动A被回收了;此时,用户可以使用back键退回到活动A,但此时活动A的呈现是通过执行onCreate()来实现,而非执行onRestart()——即活动A是被重新创建了一次。那么,我们如何找回已被回收、旧活动A中存储的临时变量呢?

解决方案

✦涉及方法✦

  • onSaveInstanceState(Buddle buddle)回调方法
    1、这个方法可以保证活动在撤销、回收之前一定会被调用,可以在这个方法中设计数据保存的功能;
    2、Buddle类型的参数提供了一系列保存数据的方法,如buddle.putString(name,content)用于保存字符串。
  • onCreate(Buddle buddle)方法
    1、buddle参数:默认为null,如果activity在被系统回收之前调用了onSaveInstanceState(Buddle buddle)来保存数据的话,那么在activity的oncreate()函数中,可以在buddle中获取保存的数据。

代码展示(Android Studio)

public class MainActivity extends AppCompatActivity{

	/**
	* 创建activity*/
	@Override
	public void onCreate(Buddle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.layout_main);
		
		/*检查savedInstanceState是否为null,若是,则说明上一次活动被回收时,未保存数据。
		**反之,则保存了数据*/
		if(savedInstanceState != null){
			String tempData = savedInstanceState.getString("data_saved");
			Log.d(TAG, tempData);
		}
	}
	
	/*
	** 在活动创建之前一定会执行该回调函数*/
	@Override
	public void onSaveInstanceState(Buddle outState){
		super.onSaveInstaceState(outState);
		String tempData = "this is something you should save";
		outState.putString("data_saved",tempData);
	}

}

该文章仅用于记录Android学习过程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值