【问题标题】:How can I prevent twice call of observe() method in onViewCreated()?如何防止 onViewCreated() 中两次调用 observe() 方法?
【发布时间】:2018-10-16 15:16:05
【问题描述】:

我有片段在onViewCreated() 请求数据, 因此,每次如果我返回该片段,它会检查mutableLiveData 是否为空,如果它为空,它会从服务器请求,我正在观察onViewCreated() 中的数据 但是,如果我导航到另一个选项卡,然后返回到同一片段 observe() 调用两次 我不想在onCreate() 中移动请求方法,就好像请求失败并且如果我导航到另一个选项卡并再次返回该选项卡,我想从服务器重新请求数据。 我的问题是如何防止两次调用observe()? 我在onDestroyView() 中添加了removeObservers(),但没有帮助

【问题讨论】:

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


    【解决方案1】:

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

    示例代码:

    viewmodel.livedata.observe(viewLifecycleOwner, Observer {
      // your code here
    })
    

    【讨论】:

      猜你喜欢
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      • 1970-01-01
      • 2022-11-26
      • 2019-12-01
      相关资源
      最近更新 更多