Ответ 1
Спасибо Greg Giacovelli, я нашел ответ здесь. Решение заключалось в установке android:launchMode="singleTop"
.
Я до сих пор не понимаю, почему такая базовая информация настолько неизвестна и трудно найти!
У меня очень простое приложение, основанное на учебнике Создание вашего первого приложения. Существует два действия: 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()
.
Спасибо Greg Giacovelli, я нашел ответ здесь. Решение заключалось в установке android:launchMode="singleTop"
.
Я до сих пор не понимаю, почему такая базовая информация настолько неизвестна и трудно найти!