Here is my code :
HomeFragment
...
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
homeViewModel.myTest.observe(viewLifecycleOwner) {
Log.d(TAG, "myTest=$it")
}
lifecycleScope.launch {
homeViewModel.doSomethingForMyTest()
}
}
...
HomeViewModel
...
private val _myTest = MutableLiveData<String>()
val myTest: LiveData<String> = _myTest
fun doSomethingForMyTest() {
Log.i(TAG, "doSomethingForMyTest start: ${System.currentTimeMillis()}")
(1..3).forEach {
_myTest.value = it.toString()
}
Log.i(TAG, "doSomethingForMyTest end: ${System.currentTimeMillis()}")
}
...
log :
I/HomeViewModel: doSomethingForMyTest start: 1628586904976
I/HomeViewModel: doSomethingForMyTest end: 1628586904977
D/HomeFragment: myTest=3
If add delay before I call the function, like this :
HomeFragment
...
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
homeViewModel.myTest.observe(viewLifecycleOwner) {
Log.d(TAG, "myTest=$it")
}
lifecycleScope.launch {
delay(1)
homeViewModel.doSomethingForMyTest()
}
}
...
log :
I/HomeViewModel: doSomethingForMyTest start: 1628587129413
D/HomeFragment: myTest=1
D/HomeFragment: myTest=2
D/HomeFragment: myTest=3
I/HomeViewModel: doSomethingForMyTest end: 1628587129414
As you can see, I don’t know the difference...
Why logs different?