在fragment的onViewCreated里observe livedata的变化的原因
Fragment.onViewCreated()是在Fragment.onCreateView()函数之后调用的,调用到它时 表明fragment视图层级结构已创建完毕。在onViewCreated()函数里观察LiveData可以保证“展示crime的视图已经准备完毕”,这也解释了为什么你传给observe()函数的不是fragment自身, 而是viewLifecycleOwner.只有你的fragment视图处于有效状态——还在屏幕上, 你才需要接受crime更新。
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) crimeListViewModel.crimeListLiveData.observe( viewLifecycleOwner, { crimes -> crimes?.let { Log.i(TAG, "Got crimes ${crimes.size}") updateUI(crimes) } } ) }