文章目录第 1 章 统一导航的价值第 2 章 Navigation Compose 基础第 3 章 返回栈与 NavOptions第 4 章 XML Nav 遗留对照踩坑第 5 章 深链与 ViewModel 作用域第 6 章 测试与反模式第 7 章 治理清单面试速查 · 追问链追问链 #1Navigation Compose vs XML 追问链 #2launchSingleTop 与 popUpTo 追问链 #3深链谁解析 ⭐追问链 #4多 BottomBar 栈 完整链路一句通相关推荐第 1 章 统一导航的价值手动FragmentTransaction堆栈难测、深链难统一、返回键行为不一致。Navigation 组件把路由、参数、返回栈声明化。场景现代默认遗留对照新 Compose 功能Navigation Compose—存量 XML 多 Fragment逐步迁移XML Nav Graph 维护第 2 章 Navigation Compose 基础SerializabledataobjectHomeRouteSerializabledataclassDetailRoute(valitemId:String)ComposablefunAppNavHost(navController:NavHostControllerrememberNavController()){NavHost(navController,startDestinationHomeRoute){composableHomeRoute{HomeScreen(onOpen{id-navController.navigate(DetailRoute(id))})}composableDetailRoute{entry-valrouteentry.toRouteDetailRoute()DetailScreen(itemIdroute.itemId)}}}Kotlin 2.x Navigation 2.8 序列化 Route 替代字符串拼参。第 3 章 返回栈与 NavOptionsnavController.navigate(DetailRoute(id)){launchSingleToptruepopUpToHomeRoute{saveStatetrue}restoreStatetrue}launchSingleTop避免重复压入同一详情。popUpTosaveStateBottomBar 多栈切换保留状态。预测性返回与NavController.popBackStack()配合勿与手动FragmentTransaction混用。第 4 章 XML Nav 遗留对照XML 时代nav_graph.xmlfindNavController().navigate(R.id.action_*)仍可能维护存量。新路由进 ComposeNavHost混排时用单一NavController桥接避免双栈。踩坑新功能仍手写transaction.replace堆栈。startActivity与 Nav 混用导致返回跳过中间页。第 5 章 深链与 ViewModel 作用域// AndroidManifest 示意intent-filteraction android:nameandroid.intent.action.VIEW/dataandroid:schememyappandroid:hostitem//intent-filternavController.navigate(deepLinkUri)。ViewModel 用hiltViewModel()或navGraphViewModels绑定 NavBackStackEntry store《ViewModel 与状态恢复》。Android 17targetSdk 37后台经IntentSender启动 Activity 受后台启动BAL约束深链入口宜在用户可见交互后触发。第 6 章 测试与反模式测试createAndroidComposeRule 测NavHost路由。反模式导航逻辑散落在 Composable 深处——路由表集中管理。第 7 章 治理清单检查项通过标准新 UICompose 用类型安全 Route返回预测性返回走 NavController参数无魔法字符串 Bundle 键新代码作用域共享 VM 用 navGraphViewModels混排单一 Nav 真相源面试速查 · 追问链追问链 #1Navigation Compose vs XML 参考回答新 Compose 功能用 Compose Nav 序列化 RouteXML 仅遗留维护。追问链 #2launchSingleTop 与 popUpTo 参考回答SingleTop 防重复实例popUpTo 清栈到某目的地并可选 saveState。追问链 #3深链谁解析 ⭐参考回答NavController Manifest intent-filter参数进 Route 或 SavedStateHandle。追问链 #4多 BottomBar 栈 参考回答嵌套navigation 各 tab 独立 startDestination popUpTo 保存状态。完整链路一句通类型安全 Route→NavHost 注册 composable→navigate NavOptions 管栈→ViewModel 绑 BackStackEntry→深链/BAL 合规入口。相关推荐Kotlin 作用域函数let/apply 怎么选Kotlin 语法与空安全从零的第一课