OnStop() действия не вызывается при запуске другого полноэкранного режима
Раньше я думал, что когда действие A заменяется другим полноэкранным действием B, тогда A onStop()
обратный вызов будет вызван.
Это также отражено в документах:
Видимое время жизни действия происходит между вызовом onStart() и вызовом onStop(). В течение этого времени пользователь может видеть активность на экране и взаимодействовать с ней. Например, onStop() вызывается, когда начинается новое действие, а это больше не видно.
Теперь, однако, я наблюдаю другое поведение (проверено на Lollipop и Marshmallow).
я начинаю AuthenticationActivity
от HomeActivity
и, несмотря на то, что AuthenticationActivity
это полноэкранное действие, HomeActivity
не остановлен
Декларация об этих действиях в декларации:
<activity
android:name=".screens.home.activities.HomeActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".screens.authentication.activities.AuthenticationActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:windowSoftInputMode="adjustResize"
android:theme="@style/AppTheme.Transparent"/>
Когда деятельность переключается, это то, что я наблюдаю в logcat:
11-28 10:16:31.443 15183-15183/somepackage I/LOG:: LifeCycle : activity (somepackage.screens.home.activities.HomeActivity@3561e8e1) paused
11-28 10:16:31.583 15183-15183/somepackage I/LOG:: LifeCycle : activity (somepackage.screens.authentication.activities.AuthenticationActivity@2bbdb20f) created
11-28 10:16:31.753 15183-15183/somepackage D/Activity: performCreate Call secproduct feature valuefalse
11-28 10:16:31.753 15183-15183/somepackage D/Activity: performCreate Call debug elastic valuetrue
11-28 10:16:31.753 15183-15183/somepackage D/AuthenticationActivity: onStart()
11-28 10:16:31.753 15183-15183/somepackage I/LOG:: LifeCycle : activity (somepackage.screens.authentication.activities.AuthenticationActivity@2bbdb20f) started
11-28 10:16:31.993 15183-15183/somepackage D/AuthenticationActivity: onResume()
11-28 10:16:31.993 15183-15183/somepackage I/LOG:: LifeCycle : activity (somepackage.screens.authentication.activities.AuthenticationActivity@2bbdb20f) resumed
11-28 10:16:32.213 15183-15183/somepackage I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@266569db time:354918367
11-28 10:16:32.613 15183-15183/somepackage I/LOG:: LifeCycle : activity (somepackage.screens.home.activities.HomeActivity@3561e8e1) saveInstanceState
11-28 10:16:32.633 15183-15183/somepackage V/ActivityThread: updateVisibility : ActivityRecord{2bcd65fd token=android.os.BinderProxy@86da390 {somepackage/somepackage.screens.home.activities.HomeActivity}} show : true
В чем дело?
2 ответа
"Например, onStop() вызывается, когда начинается новое действие, а это больше не видно".
Поскольку ваша AuthenticationActivity прозрачна, HomeActivity все еще видна => onStop не вызывается
Попробуйте удалить:
android:theme="@style/AppTheme.Transparent"