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