两个不同的Bundle对象?

时间:2011-11-11 17:38:39

标签: android

我对以下方法中的两个不同的Bundle对象有疑问:

onSaveInstanceState(Bundle outState);
onCreate (Bundle savedInstanceState);

android系统如何知道onCreate方法中的bundle对象是程序员用来保存他/她的活动状态的对象而onCreate方法使用那个Bundle对象获取被系统杀死的活动状态? Bundle对象是Activity类的成员之一和super.saveInstanceState(outState); 将Bundle保存在Activity的Bundle对象中,当一个活动调用onCreate(Bundle)方法时,该成员发送给onCreate方法?如何在onCreate()方法中使用Bundle?
请帮帮我......

1 个答案:

答案 0 :(得分:0)

您在onSaveInstanceState方法的捆绑包中保存的值将在onCreate中发回给您。以此为例。

  1. 你接到一个电话。
  2. 您的活动已停止,并且已调用onSaveInstanceState。您将一个值放入此捆绑包中。
  3. Android完成您的活动并销毁该实例,因为操作系统需要内存。
  4. 用户返回您的应用程序。
  5. 该捆绑包是从Android代表您维护的某种类型的永久存储中重新创建的。现在你的onCreate可以在onSaveInstanceState
  6. 期间获取你在bundle中放置的值

    示例

       @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.lldr_activity);
    
        mFilterCheckbox =  (CheckBox) findViewById(R.id.checkbox_id);
        if(savedInstanceState != null) {
            mFilterCheckbox.setChecked(savedInstanceState.getBoolean("FILTER_STATE", false));
        }
    }
    
     @Override
        protected void onSaveInstanceState(Bundle outState)
        {
            super.onSaveInstanceState(outState);
            outState.putParcelable("FILTER_STATE", mFilterCheckbox.isChecked());
        }