Android-Activity和Android-Fragment之间的关系是什么?在UML类图中,Activity/Fragment和ViewModel之间有什么关系?

4
让我们简要了解一下这些术语。
1. Android-Activity是独立的,它可以自己呈现视图。 2. Android-Fragment不能独立运行,需要一个Android-Activity作为其宿主。这意味着当Android-Activity被销毁时,Android-Fragment也将被销毁。Android-Fragment不严格指定应该或可以托管它的Android-Activity,只要是Android-Activity就可以。 3. Android-Activity和Android-Fragment都可以拥有ViewModel。 4. ViewModel始终依赖于Android-Activity或Android-Fragment的生命周期,这意味着当Android-Activity / Android-Fragment被销毁时,ViewModel也将被销毁(除非进行配置更改)。
让我们看一下在UML类图中定义的一些关系。
1. 组合(不确定,因为Android-Activity不依赖于Android-Fragment) 2. 聚合(不确定,因为如果Android-Activity销毁了同样适用于Android-Fragment和ViewModel,而聚合鼓励双方都能自行处理) 3. 关联(可能是也可能不是?) 4. 依赖性(可能是也可能不是?) 5. 广义化(肯定不是) 6. 实现(肯定不是)
现在,为了在UML类图上对它们进行建模,有一些问题:
1. Android-Activity与Android-Fragment之间的关系是什么? 2. Android-Activity / Android-Fragment与ViewModel之间的关系是什么?

1
这意味着当活动/片段被销毁时,ViewModel也会被销毁。但是,在配置更改(如旋转设备)时,活动和片段被销毁,但ViewModel仍然存在。 - Công Hải
1
你的问题没有任何问题,考虑到我们每天看到的可怕帖子数量,这个问题是明确定义和研究的,所以我已经删除了你帖子的顶部。不过我不完全确定这个帖子是否适合在Stack Overflow上发布,也许会被更有知识的人迁移 :) - a_local_nobody
2
我编辑了你的问题,添加了前缀“Android-”,以免与UML-activity和UML-(combined)fragment混淆。 - bruno
你的问题隐含地认为Android-activity和Android-fragment是通过UML类建模的,你确定吗? - bruno
@a_local_nobody 我把这句话放在前面,以免人们在阅读之前就对我的问题进行负评。无论如何,感谢您的编辑,我很感激,我想我的语法非常糟糕。 - Rych Emrycho
显示剩余4条评论
1个回答

2
在这两种情况下,适当的关系是组合关系,因为当父级被破坏时,子级也会被破坏。

cd1

多重性“1”表示每个片段都需要一个活动。
多重性“0..*”表示多个片段可以成为同一活动的一部分,但活动不一定有任何片段。
ViewModel 的关系如下:

cd3

更新:在你的问题中,你已经对配置更改添加了一个例外。在这种情况下,与ViewModel的关系不是组合关系。但如果您不想让这个例外影响到您的模型,您可以在图表中添加一条说明该例外的注释。

考虑到您已经回答了这个问题并且在两个平台上都有,您是否认为这个问题对于SO来说是不相关的?也许它更适合于软件工程领域?我认为这更像是一个理论问题。 - a_local_nobody
@www.admiraalit.nl 感谢您的回答,我仍在学习 UML 类图。您的意思是每当有一个类(例如:类 B)依赖于另一个类(例如:类 A),并且同时被销毁时,即使 A 可以独立运行而不需要 B(或者当 A 达到其生命周期限制时),也会认为 B 是类 A 的组成部分吗?因此,它们之间的关系是组合关系,这就是您的意思吗? - Rych Emrycho
是的,那就是我的意思。 - www.admiraalit.nl
在UML中,我们说如果类A(的实现)引用类B,则类A依赖于类B,即您无法实现类A而不实现类B。在您的问题中,您写道Activity不依赖Fragment。如果那只是意味着Activity可能没有任何Fragment,那么请忘记我关于十字架的评论。如果您的意思是说类Activity不知道类Fragment的任何信息,则我的有关十字架的评论是相关的。但即使如此,十字架也很少使用。 - www.admiraalit.nl
我不是英语的母语者,也许我用错了词来解释Activity和Fragment之间的关系(希望没有)。我的意思并不是说Activity完全不依赖于Fragment,在理论上,这是正确的,但在实践中,Activity有对Fragment的引用(例如:在类属性中),而且Fragment需要向用户呈现视图。 - Rych Emrycho
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接