问题描述:当用户在一个活动中输入了一些信息后,然后又启用了另外一个活动,则刚刚输入信息的活动则进入了停止状态,当系统内存不足时,系统会回收掉停止状态的活动,当用户点击back键返回刚刚的活动时,由于活动重新创建故用户输入的信息就会丢失,为解决这一问题,以下方法解决:
使用Bundle对象存储数据
Activity中提供了一个onSaveInstance()回调方法,这个方法的执行时机是在活动被回收之前调用。protected void onSaveInstance(Bundle outState)
Bundle对象和Intent对象存储数据方法相似,Bundle对象存储数据时:使用putString()
方法存储字符串,使用putInt()
方法存储整型数据,以此类推。存储数据是根据键值对存储的。
从Bundle对象中取出数据
Activity活动被回收,当再开启活动时则是被重新创建,会调用onCreate()
方法protected void onCreate(Bundle saveInstanceState)
,onCreate()方法中携带了一个参数是Bundle对象,存储的数据就存在了这个Bundle对象中,取出并赋值就可以了。