我有一个片段,其中onViewCreated()
中的请求数据,
因此,每次我返回到该片段时,它都会检查mutableLiveData
是否为空,如果它为空,它会从服务器请求并检查onViewCreated()
中的数据
但是,如果我导航到另一个选项卡,然后返回相同的片段observe()
,则调用两次
我不想在onCreate()
中移动请求方法,就像请求失败一样,如果我导航到另一个选项卡并再次返回该选项卡,我想从服务器请求数据。
我的问题是如何防止两次调用observe()
?
我在removeObservers()
中添加了onDestroyView()
,但这无济于事
答案 0 :(得分:0)
Android最近在片段中引入了 viewLifecycleOwner 。通过使用您的观察方法,可以防止它被调用两次。不要使用活动或片段对象,而应使用片段viewLifecycleOwner对象。 无需removeObservers()。
示例代码:
viewmodel.livedata.observe(viewLifecycleOwner, Observer {
// your code here
})