From 6fe839b6e718b4bdce440fec3afaf85d53261fe3 Mon Sep 17 00:00:00 2001 From: fansan Date: Sun, 14 Jun 2026 11:40:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BD=BF=E7=94=A8=20savedInstanceState?= =?UTF-8?q?=20=E5=88=A4=E6=96=AD=E9=BB=98=E8=AE=A4=E9=98=85=E8=AF=BB?= =?UTF-8?q?=E9=A6=96=E5=90=AF=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/ui/main/MainActivity.kt | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt index 4a17064c0..a510456c5 100644 --- a/app/src/main/java/io/legado/app/ui/main/MainActivity.kt +++ b/app/src/main/java/io/legado/app/ui/main/MainActivity.kt @@ -66,8 +66,6 @@ import kotlin.coroutines.suspendCoroutine open class MainActivity : BaseComposeActivity(), VariableDialog.Callback { companion object { - private var isFirstLaunch = true - @Volatile var hasActiveReadBookRoute: Boolean = false @@ -143,9 +141,11 @@ open class MainActivity : BaseComposeActivity(), VariableDialog.Callback { private val viewModel by viewModel() private val routeEvents = MutableSharedFlow(extraBufferCapacity = 1) private var bookInfoVariableSetter: ((String, String?) -> Unit)? = null + private var shouldApplyDefaultToRead = true internal var activeReadBookInputHandler: ReadBookInputHandler? = null override fun onCreate(savedInstanceState: Bundle?) { installSplashScreen() + shouldApplyDefaultToRead = savedInstanceState == null super.onCreate(savedInstanceState) if (checkStartupRoute()) return @@ -193,14 +193,13 @@ open class MainActivity : BaseComposeActivity(), VariableDialog.Callback { } val startRoutes = remember { - val resolved = MainNavigator.resolveStartRoute(intent) - if (isFirstLaunch && OtherConfig.defaultToRead && resolved == MainRouteHome) { - isFirstLaunch = false - arrayOf(MainRouteHome, MainRouteReadBook()) - } else { - isFirstLaunch = false - arrayOf(resolved) - } + val routes = resolveInitialStartRoutes( + resolved = MainNavigator.resolveStartRoute(intent), + defaultToRead = OtherConfig.defaultToRead, + isFreshCreate = shouldApplyDefaultToRead, + ) + shouldApplyDefaultToRead = false + routes.toTypedArray() } val backStack = rememberNavBackStack(*startRoutes) @@ -422,9 +421,6 @@ open class MainActivity : BaseComposeActivity(), VariableDialog.Callback { override fun onDestroy() { super.onDestroy() - if (!isChangingConfigurations) { - isFirstLaunch = true - } Coroutine.async { BookHelp.clearInvalidCache() } @@ -439,6 +435,18 @@ open class MainActivity : BaseComposeActivity(), VariableDialog.Callback { } +internal fun resolveInitialStartRoutes( + resolved: NavKey, + defaultToRead: Boolean, + isFreshCreate: Boolean, +): List { + return if (isFreshCreate && defaultToRead && resolved == MainRouteHome) { + listOf(MainRouteHome, MainRouteReadBook()) + } else { + listOf(resolved) + } +} + class LauncherW : MainActivity() class Launcher1 : MainActivity() class Launcher2 : MainActivity()