Fragment与Support Fragment在针对API 21(Android 5.0)及以上版本时的区别。

9

Android 仪表盘显示只有一半的设备使用 Android 5.0 及以上版本,但我们的客户数据集呈现不同的数字 - 超过93%的用户使用了这个版本。因此,我们决定停止支持低于 Android 5.0 版本的设备,并将 minSdkVersion 从15更改为21。

此升级要求我们审查所有过时的功能,并清理一些针对旧版本的hacky解决方案。现在我们可以应用的主要功能之一是将android.support.v4.app.Fragment替换为android.app.Fragment。这听起来像个好主意,特别是当我们知道片段API已经进行了评估和改进时。

为了确保我走上正确的道路,android.app.fragment不会让我感到惊讶,我想转述一下这个stackoverflow thread中的问题 - 在开发Android 5时,您是否正在使用支持库中的片段,即使它们已经可用?在Android 5.0及以上版本中是否存在片段API中的任何错误,并已在支持库中得到修复?
更新
在Android-KTX发布后,Jake Wharton在其中一个PR中发表了以下声明
感谢您抽出时间制作带有测试的PR!但是,我们鼓励开发人员仅使用支持库片段。 下一个Android版本将弃用平台版片段。 因此,我们不会在此项目中添加任何支持它们的扩展。
因此,使用来自支持库的片段是正确的做法。

2
android.app.Fragment 在 API 级别 P 中已被弃用(https://developer.android.com/reference/android/app/Fragment.html) - Artyom
我一直在等待官方公告。谢谢你让我知道。 - Krzysztof Skrzynecki
2个回答

11
我建议无论如何都使用支持库的碎片,原因有以下几点:
  1. 未来可能会添加并回溯一些功能,则需要重新编写以使用这些功能。
  2. 一致性。支持库旨在确保支持的碎片始终起作用。而本地的碎片可能在各个版本之间存在细微差异。
  3. 支持库可以包含平台的错误修复,并且可以更频繁地更新。

编辑:截至2018年,操作系统级别的Fragment已被弃用。Google的前进道路技术上是在操作系统库中做更少的工作,而是在插件中增加更多内容。对于Fragment来说,现在绝对是支持库,并且很可能对更多项目采用这种方式。


你知道Android 5.0及以上版本的Fragment API有哪些特定的缺陷吗?我知道在Android 4.0/4.1上存在许多问题。我只是想知道这个API的成熟程度如何。 - Krzysztof Skrzynecki

-2

我们几个月前开始开发一个全新的Android应用程序,当时我们也在思考同样的问题。

我认为,如果可能的话,你应该始终尝试使用android.app.Fragment。这样,你可以确信Android开发人员会优化、更新和支持这个API,并为你提供高质量的产品。

目前,我们正在使用android.support.v4.view.ViewPager和其他类似的组件,在Support库中提供与正常API不同的功能。


1
我不同意“他们会给你一个优质的产品”的说法。如果这是真的,我就不会首先提出这个问题了,因为Android团队会在Android 4.0/3.0中为我们提供坚实的片段API。 - Krzysztof Skrzynecki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接