基础学习Android知识

Android细节问题 —— 有了Intent,为什么还要有Bu

2017-03-08  本文已影响1241人  FeelsChaotic

Intent本身就可以传递参数(Intent.putExtra("key", value))为何还要用Bundle呢?

两者比较

  1. Bundle只是一个信息的载体,内部其实就是维护了一个Map<String,Object>。
  2. Intent负责Activity之间的交互,内部是持有一个Bundle的。
public Intent putExtra(String name, boolean value) {
        if (mExtras == null) {
            mExtras = new Bundle();
        }
        mExtras.putBoolean(name, value);
        return this;
    }

应用场景

如果用Intent的话,A-B先写一遍,再在B中都取出来 然后在把值塞到Intent中,再跳到C。
如果在A中用了 Bundle 的话,把Bundle传给B,在B中再转传到C,C就可以直接去取了。

bundle使用场景

 // 自定义View旋转时保存数据
public class CustomView extends View {
    @Override
    protected Parcelable onSaveInstanceState() {
        super.onSaveInstanceState();
        Bundle bundle = new Bundle();
        bundle.put...
        return bundle;
    }
  // Activity旋转时保存数据
public class CustomActivity extends Activity {
  
    @Override
    protected void onSaveInstanceState(Bundle savedInstanceState) {
        super.onSaveInstanceState(savedInstanceState);
        savedInstanceState.put...
    }

所以,Bundle是不可替代的。

上一篇 下一篇

猜你喜欢

热点阅读