официальная Android документация гласит следующее:
![image](https://developer.android.com/images/fundamentals/diagram_backstack.png)
Рисунок 1. Представление о том, как каждое новое действие в задаче добавляет элемент в стек back . Когда пользователь нажимает кнопку «Назад», текущее действие уничтожается, а предыдущее действие возобновляется.
Однако всякий раз, когда я начинаю с занятия A, используйте намерение открыть занятие B, а затем нажмите кнопку «Назад». к go обратно к A, метод A onCreate()
всегда вызывается, а не просто возобновляется.
Добавление android:launchMode="singleTop"
в манифест Android для действия A (моя операция запуска) больше не выполняется вызывает это срабатывание onCreate()
. То есть предыдущая деятельность действительно просто возобновляется, а не разрушается и воссоздается.
Почему это так? Я нахожу странным, что документация объясняет некоторые вещи в предположении, что режим запуска "Activity 2" не установлен по умолчанию standard
.
Редактировать:
I создал новое приложение, чтобы проверить вещи. Вот мой манифест:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="...">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:ignore="GoogleAppIndexingWarning">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".OtherActivity"
android:parentActivityName=".MainActivity" />
</application>
</manifest>
Вот порядок, в котором были зарегистрированы мои методы жизненного цикла:
//activity bar back button
MainActivity onCreate
MainActivity onStart
MainActivity onResume
MainActivity startActivity(intent)
MainActivity onPause
OtherActivity onCreate
OtherActivity onStart
OtherActivity onResume
MainActivity onStop
//<press button here>
OtherActivity onPause
MainActivity onDestroy
MainActivity onCreate
MainActivity onStart
MainActivity onResume
OtherActivity onStop
OtherActivity onDestroy
//AOS back button
MainActivity onCreate
MainActivity onStart
MainActivity onResume
MainActivity startActivity(intent)
MainActivity onPause
OtherActivity onCreate
OtherActivity onStart
OtherActivity onResume
MainActivity onStop
OtherActivity onBackPressed //press button here
OtherActivity onPause
MainActivity onStart
MainActivity onResume
OtherActivity onStop
OtherActivity onDestroy
Вот код, который запускает OtherActivity:
buttonStartActivity.setOnClickListener {
Log.d(LOGCAT_TAG, "MainActivity startActivity(intent)")
var intent: Intent = Intent(this, OtherActivity::class.java)
startActivity(intent)
}