Android 在片段之间发送数据的最佳方式是什么?ViewModel或目标参数?

Android 在片段之间发送数据的最佳方式是什么?ViewModel或目标参数?,android,android-fragments,android-navigation,android-viewmodel,Android,Android Fragments,Android Navigation,Android Viewmodel,假设我有两个片段: 第一片段 第二片段 用户将在FirstFragment中提示一些数据,我想将其中一些数据共享给SecondFragment。我正在使用Android的ViewModel和Jetpack的导航。传递数据的最佳方式是什么 视图模型 对于viewModel,如果我像这样实例化viewModel: MyViewModel-viewModel=ViewModelProviders.of(getActivity()).get(MyViewModel.class); 在每个片段中,我

假设我有两个片段:

  • 第一片段
  • 第二片段
用户将在FirstFragment中提示一些数据,我想将其中一些数据共享给SecondFragment。我正在使用Android的ViewModel和Jetpack的导航。传递数据的最佳方式是什么

视图模型

对于viewModel,如果我像这样实例化viewModel:

MyViewModel-viewModel=ViewModelProviders.of(getActivity()).get(MyViewModel.class);
在每个片段中,我都可以创建一个名为
setSharedData
的方法,并从第一个片段调用它,创建
getSpecificData
的方法,并根据需要在第二个片段中调用它们

目标参数

如果我使用Jetpack的导航,我可以用来共享数据,在片段之间的操作中设置数据


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

我认为视图模型方法在您希望多次使用共享数据时非常有用,但是如果您只需要共享数据来启动,我建议使用destination参数。因为在视图模型中持久化数据会占用内存,这是不必要的。

在这种情况下最好的方法?在我上面描述的示例中。另外,我想知道对于其他一些可能的情况,哪个选项更适合视图模型,数据何时从内存中删除?在切换到其他活动后?是的。当视图模型被破坏时,数据内存将被释放。