OnCreate在按下后退按钮后运行

时间:2014-07-03 10:46:13

标签: android

我正在努力了解当用户按下后我在引擎盖下发生的事情并没有覆盖onOptionsItemSelected

我有以下情况:

  1. 活动A intent.putExtra("abc", "abc");
  2. getIntent()
  3. onCreate()的活动B.
  4. 活动C
  5. 当用户点击活动C时会发生什么?

    如果我没有覆盖后退按钮,按下后退将在getIntent行上产生nullException。为什么?它位于onCreate()而不是onStart()

    如果我使用onSaveInstanceState,则捆绑包始终为空。这导致我假设back正在创建Activity的新实例。为什么?它应该完成自己。

    如果我用finish()覆盖后退按钮,它就不会再崩溃,但我认为后面的默认行为是finish()

    编辑更详细信息:

    我在每个生命周期方法中都举杯祝酒,我发现Activity B调用之后我按回活动C.这对我没有意义!

    清单:

    活动A

    <activity
        android:name=".activities.MainActivity"
        android:configChanges="orientation"
        android:screenOrientation="portrait"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    

    活动B

    <activity
        android:name=".activities.MenuActivity"
        android:configChanges="orientation"
        android:screenOrientation="portrait"
        android:label="@string/menu_title"
        android:parentActivityName=".activities.MainActivity">
    </activity>
    

    活动C

    <activity
        android:name=".activities.OptionActivity"
        android:configChanges="orientation"
        android:screenOrientation="portrait"
        android:label="@string/option_title"
        android:parentActivityName=".activities.MenuActivity">
    </activity>
    

1 个答案:

答案 0 :(得分:1)

  

当我点击活动C时,为什么活动B会被销毁?

您是否在开始活动前使用intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);表示意图。它将清除backstack,当您按下时,将重新创建活动。

<强>更新

不要依赖onDestroy()的电话,因为它可能会在按下后按钮上调用,也可能不会调用。 但是,保证在调用finish()时调用它,但在按下后按钮时肯定不会调用它。

Activity OnDestroy never called?