fragment之间有多种通信方式?我们什么时候应该使用它们?

问题描述 投票:0回答:1
There are multiple ways to communicate between fragments
(1)shared ViewModel
(2) Fragment Result Api
(3) Navigation Component
    (a) Safe Args
    (b) Arguments(Bundle)
 (4)Custom scoped ViewModel by using dagger2 dependency injection (ViewModel is same / Singleton in the same scope)

我很困惑在哪种情况下应该使用哪种方法?

android中fragment之间的通信

android android-fragments dagger-2 android-jetpack-navigation
1个回答
0
投票

当您传递少量数据时,您可能需要使用 Fragment Result API 和其他

Bundle
相关方法,因为如果数据是
Parcelable
Parcelables 列表,您可能不希望序列化和反序列化大块数据
。而且我相信它有一定的尺寸限制。

但这对于设计良好的应用程序来说不是问题。

要记住的问题是只能将单个侦听器和结果注册到给定的键。如果同一个 key 注册了多个监听器,它将被最新的监听器替换。

共享

ViewModel
可能适合您,除非它是单活动应用程序,并且您使用活动提供程序将其范围限定为能够共享片段,并且它将作为单例存在于内存中。在不需要的时候将其保存在 RAM 中似乎是一种非常愚蠢的方法。

如果共享数据相当大,您是否想将其保存在

ViewModel
中?使用此方法时,您应该记住关注点分离。如果背后有一个相对较小的逻辑可能没问题,但有时可能会太多。

© www.soinside.com 2019 - 2024. All rights reserved.