public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
请问这里的bundle和savedInstanceState是什么意思?
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
请问这里的bundle和savedInstanceState是什么意思?
Bundle类用作携带数据,它类似于Map,用于存放key-value名值对形式的值。相对于Map,它提供了各种常用类型的putXxx()/getXxx()方法,如:putString()/getString()和putInt()/getInt(),putXxx()用于往Bundle对象放入数据,getXxx()方法用于从Bundle对象里获取数据。Bundle的内部实际上是使用了HashMap<String, Object>类型的变量来存放putXxx()方法放入的值:
public final class Bundle implements Parcelable, Cloneable {
......
Map<String, Object> mMap;
public Bundle() {
mMap = new HashMap<String, Object>();
......
}
public void putString(String key, String value) {
mMap.put(key, value);
}
public String getString(String key) {
Object o = mMap.get(key);
return (String) o;
........//类型转换失败后会返回null,这里省略了类型转换失败后的处理代码
}
}
在调用Bundle对象的getXxx()方法时,方法内部会从该变量中获取数据,然后对数据进行类型转换,转换成什么类型由方法的Xxx决定,getXxx()方法会把转换后的值返回。、、、、、、、、、、、、、、、、、、、
savedInstanceState是bundle的一个临时变量名字
onSaveInstance(Bundle bundle);
Bundle 相当于Map,以键值对的形式存储!!
如果程序需要保存状态,可以重写onSaveInstance(Bundle bundle)保存需要的数据进入bundle中
如:bundle.put("string",sv);程序被回收,当重新进入程序时,会将这个参数bundle 传递给onCreate(Bundle savedInstanceState)中,
在这里在恢复由于系统回收导致程序关闭时的一些数据,防止数据丢失!!