如何防止在onViewCreated()中两次调用observe()方法?

时间:2018-10-16 15:16:05

标签: android-fragments android-architecture-components android-livedata

我有一个片段,其中onViewCreated()中的请求数据, 因此,每次我返回到该片段时,它都会检查mutableLiveData是否为空,如果它为空,它会从服务器请求并检查onViewCreated()中的数据 但是,如果我导航到另一个选项卡,然后返回相同的片段observe(),则调用两次 我不想在onCreate()中移动请求方法,就像请求失败一样,如果我导航到另一个选项卡并再次返回该选项卡,我想从服务器请求数据。 我的问题是如何防止两次调用observe()? 我在removeObservers()中添加了onDestroyView(),但这无济于事

1 个答案:

答案 0 :(得分:0)

Android最近在片段中引入了 viewLifecycleOwner 。通过使用您的观察方法,可以防止它被调用两次。不要使用活动或片段对象,而应使用片段viewLifecycleOwner对象。 无需removeObservers()。

示例代码:

viewmodel.livedata.observe(viewLifecycleOwner, Observer {
  // your code here
})
相关问题