检查是否在启动期间首次使用该应用程序

Check if first time using the app during launch

我正在尝试第一次使用屏幕(就像任何其他应用程序一样,当您在第一次使用该应用程序之前必须填写一些选项时)。 我无法在主 activity 上创建另一个 Jetpack compose 状态,因为它会检查每个重组,并将我带到导航路径(我想在启动期间检查一次数据存储条目),这是我已经尝试过的,但似乎没有用:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        lifecycleScope.launch {
            val onBoardingStatus = dataStoreManager.onBoard.first()
            setContent {
                val navController = rememberNavController()
                OnBoardingNavHost(navController)
                navController.navigate(if (onBoardingStatus) "on_boarding" else "main") {
                    launchSingleTop = true
                    popUpTo(0)
                }
            }
        }
    }

可以只检查一次(例如在应用程序 class 中而不是在 oncreate 中?) 请指教, 提前致谢

你必须为此使用LaunchedEffect,你可以这样做

enum class OnboardState {
    Loading,
    NoOnboarded,
    Onboarded,
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
        var onboardingState by remember {
            mutableStateOf(OnboardState.Loading)
        }
        LaunchedEffect(Unit) {
            onboardingState = getOnboardingState()
        }
        when (onboardingState) {
            OnboardState.Loading -> showSpinner()
            OnboardState.NoOnboarded -> LaunchedEffect(onboardingState) {
                navigateToOnboarding()
            }
            OnboardState.Onboarded -> showContent()
        }
    }
}