当前位置: 首页 > 知识库问答 >
问题:

活动和片段是否构成循环引用?

柴丰
2023-03-14

今天早上我读了几篇关于避免循环引用的文章。我刚刚意识到,在Android中,如果一个活动包含一个片段,那么该片段也应该包含对包含该活动的引用。它不是在建立一个循环引用吗?

我觉得这可能是一个愚蠢的问题,但是问愚蠢的问题是一种学习的好方法,不是吗?

共有3个答案

萧飞
2023-03-14

是的,这是一个循环引用,但是android通过在销毁之前将片段从其主机分离(因此破坏循环引用)来管理它,然后可以进行垃圾收集。

田阳泽
2023-03-14

关于活动和碎片之间的区别,有一个有用的讨论,它提供了更多的信息。活动和片段之间的关系是这样的,“片段”表示活动中的行为或用户界面的一部分。一个活动可能包含0个或多个片段(通常在两个窗格视图或Tablet UI中)。你可以从这里的官方文件中阅读更多关于这个主题的内容。

房星光
2023-03-14

活动和片段有自己的生命周期,没有循环引用的东西,试着用不同的片段和活动生命周期弄脏你的手,你就会知道。

 类似资料:
  • 我这么问的原因是因为我多年来一直在专门使用活动,Facebook SDK和Google Maps 2.0迫使我使用片段,现在我想知道与其他实现相比,它们是否本质上“更好”。 如果这个“不具建设性”或“过于开放”,那么答案显然是“不”。但是如果有一些谷歌开发者的文档或博客关于这个确切的主题,那么我想知道它

  • 有一个调用。调用但从不调用,它是在中编写的。 代码: 代码:

  • 在Android中,当我们用一个新的片段替换容器视图时,我们可以使用replace()和addToBackStack(),因此按下back按钮就可以转到上一个片段。 但如果出现以下情况怎么办: 在Activity1中,我可以按下back按钮从fragment2转到fragment1。但当fragment2启动另一个活动时,从Activity2按下back按钮,它会将我带到Activity1中的fr

  • 我有一个由一个活动和几个片段组成的应用程序,由谷歌重新指挥。其他细节在这里。我想保持一个菜单静止和切换我的碎片在容器在中心。 当我启动该活动时,它会初始化一个变量,如代码所示。 但是,当我在fragment onCreate中使用这个变量()时,活动中的绑定行会因,如下面的logcat所示 下面是完整的logcat,我们可以看到第二个sout丢失了,但在这一点上没有抛出错误。

  • 我需要创建一个“滑动活动”,当用户滑动它时它会滑动。当用户向左“滑动”时,活动应该向左滑动,新的活动会从右侧来到屏幕上。你不能把它放在中间。同样的事情发生在雅虎邮件应用程序中。你可以在阅读邮件时看到这个,向左滑动邮件移动到下一封邮件。就像下面一样。 在图中,您可以看到下一封邮件(标题为“谢谢”)正在从侧面打开。在我的例子中,它们是两种不同的活动。我们还建议在当前活动的右侧显示下一个活动的一小部分(