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: <