public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
}
请问这里的bundle和savedInstanceState是什么意思?

解决方案 »

  1.   

    Bundle类的作用
    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的一个临时变量名字
      

  2.   

    一个Activity调用另外一个Activity时 可以通过在intent加入Bundle对象,这个Bundle内的数据就可以从这里取出
      

  3.   

    可以用Bundle 跳转界面传值比如说登陆的用户等
      

  4.   

    android 里的应用程序,每个Activity都存在于多种状态,这些都系统管理的!当内存消耗过多时,系统会关闭一些后台Activity!回收内存!此时会在销毁activity之前会回调一个函数
    onSaveInstance(Bundle bundle);
    Bundle 相当于Map,以键值对的形式存储!!
    如果程序需要保存状态,可以重写onSaveInstance(Bundle bundle)保存需要的数据进入bundle中
    如:bundle.put("string",sv);程序被回收,当重新进入程序时,会将这个参数bundle 传递给onCreate(Bundle savedInstanceState)中,
    在这里在恢复由于系统回收导致程序关闭时的一些数据,防止数据丢失!!