我应该用片段替换Android活动吗?

我应该用片段替换Android活动吗?,android,performance,android-fragments,android-activity,Android,Performance,Android Fragments,Android Activity,我有一个大型Android游戏,其中每个逻辑屏幕都有一个活动。 (启动屏幕、开始屏幕、关卡选择器、游戏屏幕和设置是不同的活动)。 现在一切正常 如果我重写所有内容,使只有一个活动,并且逻辑屏幕是片段,那么它会减少RAM或CPU消耗吗?否,它可能会增加它(因为您将有更多的类),但只会略微增加 使用片段的好处是拥有可重用的“块”,您可以根据需要四处移动。例如,对于一个特定的活动,您可以有一个布局,在该布局中,您的主窗口位于屏幕上,单击一个项目将创建一个包含一些详细信息的新活动。使用片段,您可以为平板

我有一个大型Android游戏,其中每个逻辑屏幕都有一个活动。 (启动屏幕、开始屏幕、关卡选择器、游戏屏幕和设置是不同的活动)。 现在一切正常


如果我重写所有内容,使只有一个活动,并且逻辑屏幕是片段,那么它会减少RAM或CPU消耗吗?

否,它可能会增加它(因为您将有更多的类),但只会略微增加


使用片段的好处是拥有可重用的“块”,您可以根据需要四处移动。例如,对于一个特定的活动,您可以有一个布局,在该布局中,您的主窗口位于屏幕上,单击一个项目将创建一个包含一些详细信息的新活动。使用片段,您可以为平板电脑创建一个布局,其中主窗口只占屏幕的一半,其余部分用于细节片段,而无需重写所有内容。

据我所知,,片段对RAM或CPU几乎没有影响

活动包含某些元素并执行某些功能。一个片段被加载到一种基本活动上,就像一个只有一个ActionBar的活动一样。剩下的被碎片填满了

另外,请查看:


片段对我来说的主要好处是易于数据共享。在两个活动之间,数据必须以相对原始的类型传递…字符串、int、arrayList等。 然而,在片段和活动之间,数据可以在复杂的类中来回传递。

在说了几年(两年)的“片段就是要走的路”之后,我再也不会用片段代替活动了

使用片段重新使用某些组件是可以的。将片段用于对话框也很好,但我现在已经意识到片段实现是多么糟糕,片段生命周期是多么糟糕,FragmentManager在某些情况下是多么不可预测(和有缺陷)。继续,花点时间在谷歌上搜索一下,你会发现所有“边缘但不那么边缘”的情况,在这些情况下,必须实施黑客来解决“按设计”的错误行为

有时,您必须从Android源代码中扩展或复制这些类的源代码,以修改私有或受保护的字段

别误会我,我在工作。但它们并不是你所有问题的解决方案(从中长期来看,它们可能是新问题的来源)。如果你已经有活动,享受吧!事实上,具有共享元素的新过渡框架清楚地表明,谷歌希望您使用更多的活动;)


这是我在大约六个中大型Android项目中工作后的个人观点(有些项目很受欢迎,你可能已经使用过了!)

这可能会对你有所帮助:它可能不会大大减少RAM或CPU的消耗,但肯定会减少你内心的平静。所以,只有当您想创建可重用代码并利用模块化设计时,才可以使用片段重新创建。这并不完全正确。一个活动中可以有多个片段,它不必占用所有可用空间