想象一下,我有两个片段:


第一片段
SecondFragment


用户将在FirstFragment中提示一些数据,我想将这些数据共享给SecondFragment。我正在使用Android的ViewModel和Jetpack的Navigation。哪种数据传输方式最好?

视图模型

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

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


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

目标参数

如果使用Jetpack的导航,则可以使用destination arguments with safe-args共享数据,并在“片段”之间的操作中进行设置。

您认为最佳选择是什么?您是否认为这些是适合不同情况的不同解决方案?在那种情况下,我应该在哪种情况下使用哪种方法?

最佳答案

我认为,当您想多次使用共享数据时,视图模型方法很有用,但是如果您只需要使用共享数据进行初始化,则建议使用destination参数。因为将数据持久化在视图模型中不会占用内存,所以没有必要。

10-06 14:02
查看更多