AppCompatActivity恢复Compose Navigation返回栈失败,是否为Jetpack Compose Bug?
确认:Jetpack Compose Bug 还是自身实现问题?
运行App时抛出如下异常:
java.lang.IllegalStateException: Restoring the Navigation back stack failed: destination 132070424 cannot be found from the current destination ComposeNavGraph(0x0) startDestination={Destination(0xe362b7e) route=com.example.typesafenavigation.Login}
异常重现步骤
- 在「开发者选项」中将「后台进程限制」设置为「不允许后台进程」。
- 打开目标App。
- 最小化该App并打开另外2个应用。
- 再次打开该App。
- App崩溃并抛出上述异常。
无异常的两种场景
- 使用
ComponentActivity替代AppCompatActivity - 使用普通字符串作为路由而非类型安全的
Object
这是否属于Jetpack Compose的Bug?
App源代码
import android.os.Bundle import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import kotlinx.serialization.Serializable class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { val navController = rememberNavController() NavHost( navController = navController, startDestination = Login ) { composable<Login> { LoginScreen() } } } } } @Composable fun LoginScreen() { Box( modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center ) { Text( text = "Login Screen", fontSize = MaterialTheme.typography.headlineLarge.fontSize ) } } @Serializable object Login
更新
- 提供了示例项目
- 提供了演示视频
内容的提问来源于stack exchange,提问作者Slava
相关产品推荐
相关产品推荐

