视图模型正在运行多个组合



我正在检查我的调试,我看到我的ViewModel或屏幕运行多次

我viewModel

@HiltViewModel
class DownloadViewModel @Inject constructor(
private val repository: DataRepository
): ViewModel() {
val downloadList: LiveData<List<DownloadModel>> = repository.getDownload().asLiveData()

屏幕

@Composable
fun TetsScreen(dm : DownloadViewModel){
Log.e("is running", "true")
val downloads by dm.downloadList.observeAsState()

Column(modifier = Modifier
.background(color = Color.White)
.fillMaxSize()
.verticalScroll(rememberScrollState())
) {
if (downloads.isNullOrEmpty()){
//to do
}else{
Log.e("its", "work")
}
}

我NavHost

val navController = memorbernavcontroller ()NavHost(navController = navController, startDestination = AppScreens.MainScreen.name){

composable(AppScreens.TestScreen.name){
TetsScreen(downloadViewModel)
}
composable(AppScreens.MainScreen.name){
MainScreen(navController = navController, userViewModel, profileViewModel, downloadViewModel)
}

用于启动新屏幕

LaunchedEffect(Unit){
navController.navigate(AppScreens.TestScreen.name) {
popUpTo(AppScreens.MainScreen.name) { inclusive = true}
}
}

和我的调试

E/is running: true
E/is running: true
E/is running: true
E/its: work
E/is running: true
E/its: work
E/its: work

但是当我删除

val downloads = dm.downloadList.observeAsState()

一切都会恢复正常

我尝试启动屏幕没有启动效果,但没有改变

如果你能帮助我,请告诉我

这实际上不是你的视图模型,因为你从LiveData收集数据,每次你得到一个更新(不管它的内容),组成检测到它,并得到刷新每一个新的观察到的数据变化,这就是为什么你看到你的日志每一个重新组合为"E/正在运行:true"直到一些数据成功加载,最后显示一个"E/正在运行":true&;后面是"E/its: work"的日志。

最新更新