首页 > 解决方案 > mutableStateOf 值更改后不会触发 Recompose

问题描述

我想通过更改 mutableStateOf mCurrentSplashTaskIndex 来运行不同的任务。但是 Jetpack Compose recompose 在 executeCurrentTask 运行执行 task1 后不会触发,其中 mCurrentSplashTaskIndex 更改为 1。代码如下。你愿意帮帮我吗?非常感谢。

class SplashViewModel : ViewModel() {
    private val Tag = "SplashViewModel"
    private val mCurrentSplashTaskIndex = mutableStateOf(0)

    @Composable
    fun executeCurrentTask() {
        when (mCurrentSplashTaskIndex.value) {
            0 -> {
                Task1()
            }
            1 -> {
                Task2()
            }
        }
    }

    @Composable
    private fun Task1() {
        Log.d(Tag, "Task1 start...")
        findNextTask()
    }

    @Composable
    private fun Task2() {
        Log.d(Tag, "Task2 start...")
    }

    private fun findNextTask() {
        Log.d(Tag, "Find out next available task.")
        mCurrentSplashTaskIndex.value = mCurrentSplashTaskIndex.value + 1
        Log.d(Tag, "Got next available task ${mCurrentSplashTaskIndex.value}")
    }

}

标签: android-jetpack-compose

解决方案


推荐阅读