Подтвердить что ты не робот

Почему onDestroy всегда вызывается при возврате к родительской активности?

У меня очень простое приложение, основанное на учебнике Создание вашего первого приложения. Существует два действия: MainActivity вызывает DisplayMessageActivity через startActivity().

При вводе DisplayMessageActivity я вижу:

MainActivity.onStop()

как и ожидалось, но когда я нажимаю кнопку "Назад", чтобы вернуться к родительскому MainActivity, я получаю:

MainActivity.onDestroy()
MainActivity.onCreate(null)
MainActivity.onStart()

Активность всегда уничтожается для этого очень простого приложения. Но согласно документации (вторая маркерная точка), типичное поведение заключается в том, что действие приостанавливается и перезапускается в таких случаях.

Кроме того, onDestroy() не происходит при первом запуске дочернего процесса, но только один раз нажимается кнопка "Назад".

Два вопроса:

  • Есть ли способ предотвратить уничтожение родителя в общем случае?
  • Почему null передается в onCreate() здесь? Это предотвращает сохранение состояния через onSaveInstanceState().

Обратите внимание, что я проверил, что Настройки → Параметры разработчика → Приложения → Не выполнять действия, не отмечены.

Edit:

Вот как дочерняя активность связана с родителем:

    <activity
        android:name="com.example.helloworld.DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.helloworld.MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.helloworld.MainActivity" />
    </activity>

Отслеживание через DisplayMessageActivity.onOptionsItemSelected(), я вижу, что он вызывает Activity.onNavigateUp().

4b9b3361

Ответ 1

Спасибо Greg Giacovelli, я нашел ответ здесь. Решение заключалось в установке android:launchMode="singleTop".

Я до сих пор не понимаю, почему такая базовая информация настолько неизвестна и трудно найти!