支持片段与原生片段
Support fragment vs Native fragment
我们有一个应用程序,其最低 SDK 级别设置为 API21。我们目前正在使用支持片段,现在正在讨论迁移到本机片段。
之所以讨论转向本机片段,是因为支持片段适用于不支持本机片段的较低 API 设备。现在每个设备都有碎片并且它们看起来很稳定。那么,为什么不迁移到本机片段以实现更精简的实现。
支持库 v13 的 FragmentCompat 有望支持本机片段的新功能,支持库 v13 中已经存在诸如 ViewPager 之类的东西。但是特定于平台的错误将需要 API 特定处理。
另一方面,通过支持库 v4 的 Fragment,我们得到
向后兼容功能,例如运行时权限。
跨所有平台的一致性,因为它跨平台使用相同的实现。没有特定于平台的处理。
下一个 android 版本中的所有新方法都可以在所有平台上使用。
支持库的发布频率高于 Android 平台。因此,错误修复会更快,我们在推动修复时将拥有更多控制权。无需等待 OEM 更新每个 phone,而是更新应用程序中的支持库。
但是这些好处是否足以让 API 级别低于 11 的设备保留旧代码?
这应该可以帮助您做出决定,因为它现在是官方的 Android 团队立场:
Fragment
This class was deprecated in API level P.
Use the Support Library Fragment
for consistent behavior across all devices and access to Lifecycle.
来源:https://developer.android.com/reference/android/app/Fragment
But are these benefit enough [...]?
当然,您想要一致的行为,而不必迎合每个 API 级别和供应商特定的怪癖。
我们有一个应用程序,其最低 SDK 级别设置为 API21。我们目前正在使用支持片段,现在正在讨论迁移到本机片段。
之所以讨论转向本机片段,是因为支持片段适用于不支持本机片段的较低 API 设备。现在每个设备都有碎片并且它们看起来很稳定。那么,为什么不迁移到本机片段以实现更精简的实现。
支持库 v13 的 FragmentCompat 有望支持本机片段的新功能,支持库 v13 中已经存在诸如 ViewPager 之类的东西。但是特定于平台的错误将需要 API 特定处理。
另一方面,通过支持库 v4 的 Fragment,我们得到
向后兼容功能,例如运行时权限。
跨所有平台的一致性,因为它跨平台使用相同的实现。没有特定于平台的处理。
下一个 android 版本中的所有新方法都可以在所有平台上使用。
支持库的发布频率高于 Android 平台。因此,错误修复会更快,我们在推动修复时将拥有更多控制权。无需等待 OEM 更新每个 phone,而是更新应用程序中的支持库。
但是这些好处是否足以让 API 级别低于 11 的设备保留旧代码?
这应该可以帮助您做出决定,因为它现在是官方的 Android 团队立场:
Fragment
This class was deprecated in API level P.
Use the Support Library
Fragment
for consistent behavior across all devices and access to Lifecycle.
来源:https://developer.android.com/reference/android/app/Fragment
But are these benefit enough [...]?
当然,您想要一致的行为,而不必迎合每个 API 级别和供应商特定的怪癖。