From cc8008e7e303c2b9133971220343d4ac0e221433 Mon Sep 17 00:00:00 2001 From: fansangg Date: Sun, 14 Jun 2026 04:40:04 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix:=E5=88=87=E6=8D=A2=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=E9=A3=8E=E6=A0=BC=E5=90=8E=E4=BC=9A=20=E2=80=9C=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E8=B7=B3=E8=BD=AC=E6=9C=80=E8=BF=91=E9=98=85=E8=AF=BB?= =?UTF-8?q?=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/ui/main/MainActivity.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 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 f45bab74d..4a17064c0 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,6 +66,8 @@ import kotlin.coroutines.suspendCoroutine open class MainActivity : BaseComposeActivity(), VariableDialog.Callback { companion object { + private var isFirstLaunch = true + @Volatile var hasActiveReadBookRoute: Boolean = false @@ -142,7 +144,6 @@ open class MainActivity : BaseComposeActivity(), VariableDialog.Callback { private val routeEvents = MutableSharedFlow(extraBufferCapacity = 1) private var bookInfoVariableSetter: ((String, String?) -> Unit)? = null internal var activeReadBookInputHandler: ReadBookInputHandler? = null - override fun onCreate(savedInstanceState: Bundle?) { installSplashScreen() super.onCreate(savedInstanceState) @@ -193,9 +194,11 @@ open class MainActivity : BaseComposeActivity(), VariableDialog.Callback { val startRoutes = remember { val resolved = MainNavigator.resolveStartRoute(intent) - if (OtherConfig.defaultToRead && resolved == MainRouteHome) { + if (isFirstLaunch && OtherConfig.defaultToRead && resolved == MainRouteHome) { + isFirstLaunch = false arrayOf(MainRouteHome, MainRouteReadBook()) } else { + isFirstLaunch = false arrayOf(resolved) } } @@ -419,6 +422,9 @@ open class MainActivity : BaseComposeActivity(), VariableDialog.Callback { override fun onDestroy() { super.onDestroy() + if (!isChangingConfigurations) { + isFirstLaunch = true + } Coroutine.async { BookHelp.clearInvalidCache() } From 6fe839b6e718b4bdce440fec3afaf85d53261fe3 Mon Sep 17 00:00:00 2001 From: fansan Date: Sun, 14 Jun 2026 11:40:19 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=E4=BD=BF=E7=94=A8=20savedInstanceSt?= =?UTF-8?q?ate=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() From 584891a84e700641d32d4a58edd1517f6cc07637 Mon Sep 17 00:00:00 2001 From: fansan Date: Sun, 14 Jun 2026 12:29:05 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=E5=B0=86=20MainActivity=20=E9=A6=96?= =?UTF-8?q?=E5=90=AF=E6=A0=87=E8=AE=B0=E6=B6=88=E8=B4=B9=E7=A7=BB=E5=88=B0?= =?UTF-8?q?=20SideEffect?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/ui/main/MainActivity.kt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 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 a510456c5..59409e3c4 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 @@ -20,6 +20,7 @@ import androidx.compose.animation.scaleOut import androidx.compose.animation.togetherWith import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.SideEffect import androidx.compose.runtime.remember import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.lifecycle.lifecycleScope @@ -193,16 +194,18 @@ open class MainActivity : BaseComposeActivity(), VariableDialog.Callback { } val startRoutes = remember { - val routes = resolveInitialStartRoutes( + resolveInitialStartRoutes( resolved = MainNavigator.resolveStartRoute(intent), defaultToRead = OtherConfig.defaultToRead, isFreshCreate = shouldApplyDefaultToRead, - ) - shouldApplyDefaultToRead = false - routes.toTypedArray() + ).toTypedArray() } val backStack = rememberNavBackStack(*startRoutes) + SideEffect { + shouldApplyDefaultToRead = false + } + LaunchedEffect(backStack) { routeEvents.collect { route -> MainNavigator.navigateToRoute(backStack, route)