我应该用片段替换 Android 活动吗?
Posted
技术标签:
【中文标题】我应该用片段替换 Android 活动吗?【英文标题】:Should I replace Android Activities by Fragments? 【发布时间】:2015-06-06 05:36:33 【问题描述】:我有一个大型 android 游戏,其中每个逻辑屏幕都有一个 Activity。 (启动画面、开始画面、关卡选择器、游戏画面和设置是不同的活动)。 现在一切正常。
如果我将所有内容重写为只有一个活动并且逻辑屏幕是片段,它会减少 RAM 或 CPU 消耗吗?
【问题讨论】:
这可能对你有帮助:***.com/questions/20306091/… 它可能不会大大减少 RAM 或 CPU 的消耗,但它肯定会降低您的安心。因此,仅当您想创建可重用代码并利用模块化设计时才使用片段重新创建。 【参考方案1】:在多年(两年多)说“片段是要走的路”之后,我再也不会用片段代替活动了。
使用片段重新组合某些组件是可以的。将片段用于对话框也很好,但我现在已经意识到片段实现有多糟糕,片段生命周期有多糟糕,以及片段管理器在某些情况下往往是多么不可预测(和错误)。继续花一些时间谷歌搜索,你会发现所有“边缘但不是那么边缘”的情况,其中必须实施黑客以解决“设计”错误行为。
有时您必须从 Android 源代码中扩展或复制这些类的源代码以修改私有或受保护的字段……
别误会,片段有效。但它们并不是你所有问题的解决方案(它们可能是中长期新问题的来源)。如果您已经有活动,那就尽情享受吧!事实上,带有共享元素的新过渡框架清楚地表明 Google 希望您使用更多活动;)
这是我在大约六个中大型 Android 项目工作后的个人意见(有些很受欢迎,你可能已经使用过它们!);)
【讨论】:
【参考方案2】:据我所知,没有,片段对 RAM 或 CPU 没有(几乎)没有影响。
Activity 包含某些元素并执行某些功能。一个 Fragment 被加载到一种基本的 Activity 上,就像一个只有一个 ActionBar 的 Activity。其余部分由 Fragment 填充。
也可以看看:
android - need some clarifications of fragments vs activities and views
Activity or Fragment which is better way to use for performance and reliable?
【讨论】:
这并不完全正确。一个活动中可以有多个片段,它不必占用所有可用空间【参考方案3】:不,它可能会增加它(因为你会有更多的课程),但只是略微增加。
使用片段的好处是拥有可重复使用的“块”,您可以根据需要移动这些“块”。例如,对于一个特定的活动,你可以有一个布局,你的主窗口在屏幕上,点击一个项目会创建一个包含一些细节的新活动。使用片段,您可以为平板电脑创建一个布局,其中主窗口仅占屏幕的一半,其余部分用于详细信息片段,而无需重写所有内容。
【讨论】:
【参考方案4】:片段对我的主要好处是易于数据共享。在两个活动之间,数据必须以相对原始的类型传递...字符串、整数、数组列表等。 但是在片段和活动之间,数据可以在复杂的类中来回传递。
【讨论】:
以上是关于我应该用片段替换 Android 活动吗?的主要内容,如果未能解决你的问题,请参考以下文章