【问题标题】:Which is the best way to send data between fragments? ViewModel or Destination Arguments?在片段之间发送数据的最佳方式是什么? ViewModel 或目标参数?
【发布时间】:2019-08-07 03:32:21
【问题描述】:

假设我有两个片段:

  • 第一个片段
  • 第二个片段

用户会在 FirstFragment 中提示一些数据,我想将其中一些数据分享给 SecondFragment。我正在使用 Android 的 ViewModel 和 Jetpack 的 Navigation。传递数据的最佳方式是什么?

视图模型

在 viewModel 的情况下,如果我像这样实例化 viewModel:

MyViewModel viewModel = ViewModelProviders.of(getActivity()).get(MyViewModel.class);

在每个片段中,我可以创建一个名为 setSharedData 的方法并从 FirstFragment 调用它,并创建到 getSpecificData 的方法并在我的 SecondFragment 中根据需要调用它们。

目标参数

如果我使用 Jetpack 的 Navigation,我可以使用 destination arguments with safe-args 共享数据,将其设置在 Fragment 之间的操作中。

你认为哪个选项最好?您认为这些是更适合不同情况的不同解决方案吗?在那种情况下,我应该在哪种情况下使用哪种方法?

【问题讨论】:

  • 哪种情况下最好的方法?
  • 在我上面描述的例子中。另外,我想知道对于其他一些可能的情况,哪个选项更好

标签: android android-fragments android-navigation android-viewmodel


【解决方案1】:

我认为视图模型方法在您想要多次使用共享数据时很有用,但如果您只需要共享数据来启动,我建议使用目标参数。因为在视图模型中持久化数据会占用内存,而且没有必要。

【讨论】:

  • 在视图模型的情况下,什么时候从内存中删除数据?换成其他活动后?
  • 是的。当视图模型被销毁时,数据的内存将被释放。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
相关资源
最近更新 更多