У меня очень простое приложение, основанное на учебнике Создание вашего первого приложения. Существует два действия: 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()
.