Kotlin StateFlow&SharedFlow(二)

StateFlow

hold flow, 没有消费者进行消费的时候,生产者也可以生产数据(生产者在没有消费者订阅之前生产数据可能会丢失数据)。

class MainViewModel : ViewModel() {
   

    private val _stateFlow = MutableStateFlow(0)

    val stateFlow = _stateFlow.asStateFlow()

    fun incrementCounter() {
   
        _stateFlow.value += 1
    }

}

In Compose:

class MainActivity : ComponentActivity() {
   
    
    override fun onCreate(savedInstanceState: Bundle?) {
   
        super.onCreate(savedInstanceState)
        setContent {
   
            FlowDemoTheme {
   
                //val viewModel = ViewModelProvider(this).get(MainViewModel::class.java)
                val viewModel = viewModel<MainViewModel>()
                val count = viewModel.stateFlow.collectAsState(initial = 10)
                Box(modifier = Modifier.fillMaxSize()) {
   
                    Button(onClick = {
    viewModel.incrementCounter() }) {
   
                        Text(text = "Counter: <

你可能感兴趣的:(android,android,android,jetpack)