片段和片段活动本质上比活动更快吗?
如果我不需要在片段中加载我的活动,我应该在活动中使用FragmentActivities和Fragments吗?
我要问的原因是因为我多年来一直在使用“活动”,Facebook SDK以及Google Maps 2.0迫使我使用碎片,现在我想知道它们本质上是“更好”还是没有,与其他一些实施相比。
如果这“不具有建设性”或“过于开放”,那么答案显然是“不”。但是,如果有一些谷歌开发者文档或博客关于这个确切的主题,那么我想知道它
答案 0 :(得分:11)
我在上一次申请中成了片段的信徒。无论它们是否在计算上更快,它们感觉更快,因为你可以基本上即时交换它们,包括完全支持后备栈,如果你做得对(在事务上调用addToBackStack(),或类似的东西)。
我现在使用Fragments / Fragment活动进行所有想要感觉非常快速的导航,例如点击一行以获取更多详细信息。我只是推出新的活动,因为我想要做一个根本不同的事情并且有一个干净的平板可以使用。例如,我通常有一个LoginActivity专门处理登录/注册,至少还有一个是应用程序的核心。
但碎片的根本好处仍然是它们的灵活性。我可以在其他片段之上显示片段,在不同的屏幕尺寸上重新排列它们等等。但是还有很多其他好处。只需要一段时间就能感觉自然(就像活动最初那样)。
有一点需要注意,我总是后悔在我的布局中嵌入碎片。我无法从头脑中给出确切的理由,但基本上你只是失去了一些灵活性。相反,我为每个片段构建一个普通的布局,并在活动布局中添加占位符视图,以编程方式创建片段,并使用transaction.replace()将其添加到布局中。也许是因为这是我将片段放入和放出占位符视图的主要方式,并且更喜欢在可能的情况下只使用一种方法。
答案 1 :(得分:1)
是的,片段专门用于支持大屏幕以有效地使用该区域。处理片段非常容易并且在内存方面。但是嵌套片段会带来麻烦
答案 2 :(得分:0)
如果要拆分屏幕,碎片非常有用。因此,您可以在同一屏幕中拥有不同的视图。另一种使用片段的方法,假设你有标签来分类项目。可以把衣服,鞋子作为你的标签。每个选项卡都有一个片段来容纳产品。标签可以保存在活动中或片段中。我确实发现片段比活动稍快,但实际上它并不是你在大多数情况下会注意到的。无论它们是否用于速度,它们看起来/感觉都会更快。
使用片段的缺点是某些回调如onBackPressed只在一个活动中。片段无法访问此内容。我经常发现尽量减少尽可能多的活动。另外不要忘记活动不仅仅是视图,它们也是一个屏幕。片段只是一个视图,没有屏幕。工具/操作栏等也仅适用于活动但是如果您使用自定义工具栏,您可以通过实现onTouch(如果不是按钮但是某些对象)或onClick(按钮)在片段中使用此方法,这些方法将为您提供你需要。所以确实存在一些缺点,但至少有一些是解决方法。
我同意片段转换很棒并且在使用后退按钮和onBackPressed时弹出堆栈这样做。
我总是在父活动等中使用一个开关来查看,哪个片段需要在视图中,我经常使用接口传递包等来更新它。不确定是否有其他人找到了更有效的方法。但我确实发现切换视图时非常有用。
对于大多数事情,是的碎片是最高级的。