目标 api 21 (Android 5.0) 及以上时的片段与支持片段

Fragment vs Support Fragment when targeting api 21 (Android 5.0) and above

Android dashboards 显示只有一半的设备具有 Android 5.0 及更高版本,但我们的客户数据集的数字看起来不同 - 它超过了我们 93% 的用户。因此,我们决定放弃对 Android 版本低于 5.0 的设备的支持,并将 minSdkVersion 从 15 更改为 21。

此升级要求我们审查所有过时的功能并清理我们用于支持旧版本的一些 hacky 解决方法。我们现在可以应用的主要功能之一是用 android.app.Fragment 替换 android.support.v4.app.Fragment。这听起来是个好主意,尤其是当我们知道 fragment API had been reviewed and improved.

只是为了确保我会走正确的道路 android.app.fragment 不会让我感到惊讶即使它们已经可用,在为 Android 5 开发时? Android 5.0 及更高版本上出现的片段 API 中是否存在任何错误并已在支持库中修复?

更新

Android-KTX发布后,Jake Wharton made the following statement in one of PRs

Thanks for taking the time to make the PR (with tests!), but we would like to encourage that developers only use the support library fragments. The next version of Android will deprecate the version of fragments that are part of the platform. Thus, we aren't going to add any extensions to support them in this project.

所以使用支持库中的片段是正确的做法。

出于以下几个原因,我还是建议使用支持库片段:

  1. 可能会添加和向后移植未来的功能,然后您需要重写才能使用它们
  2. 一致性。支持库致力于确保支持片段始终以相同的方式工作。而本机片段可能在版本之间存在细微差异。
  3. 支持库可以包含对平台的错误修复,并且可以更频繁地更新。

编辑:自 2018 年起,OS 级片段已弃用。 Google 技术上的前进道路是在 OS 库中做更少的事情,而在附加组件中做更多的事情。所以对于 Fragment 这绝对是现在的支持库,并且可能会以这种方式获得更多项目。

我们几个月前开始了一个新的 Android 应用程序,我们也想知道同样的事情。

IMO,如果可能,您应该始终尝试使用 android.app.Fragment。这样,您可以确定 Android 开发人员优化、更新和支持此 API,他们将为您提供优质的产品。

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