Android Studio 中的向后兼容性是啥?

Posted

技术标签:

【中文标题】Android Studio 中的向后兼容性是啥?【英文标题】:What is Backwards Compatibility in Android Studio?Android Studio 中的向后兼容性是什么? 【发布时间】:2017-10-02 22:35:33 【问题描述】:

我是 android 开发的新手。即使我提到了 android 开发人员website,我也没有弄清楚。

在自定义 Activity 对话框中,当我在 Android Studio 2.3.1 中取消选中 Backwards Compatiblity(Appcompat) 时,它给了我一个提示:

如果为 false,则此活动基类将是 Activity 而不是 AppCompatActivity

一般来说,Android 开发者更喜欢什么?是否启用向后兼容性?谁能解释一下哪个更好。

【问题讨论】:

更多背景信息请参见***.com/a/38963902/115145 和***.com/a/36989121/115145。摘要中没有“更好”——您需要定义可以比较选项的标准。 【参考方案1】:

Android 应用无需选中此复选框即可向后兼容。

如果为 false,则此活动基类将是 Activity 而不是 AppCompatActivity

Android Studio 通知您,如果取消选中“向后兼容性(Appcompat)”框,那么您将包含并使用库 Activity 而不是 AppCompatActivity。 有关两者之间更详细的比较,请查看:Activity, AppCompatActivity, FragmentActivity, and ActionBarActivity: When to Use Which?

一般来说,Android 开发者更喜欢什么?启用向后兼容性还是不启用它?

“CommonsWare”写的评论最好地解释了这一点:

选中该复选框创建的活动不比未选中该复选框的活动向后兼容。选中该复选框可为您的应用提供特定的外观和感觉,该外观将在某些旧设备上保留该外观和感觉;未选中该复选框意味着您的外观的某些方面在 Android 5.0 之前的设备上会有所不同。不过,这不会影响活动的核心功能。 – CommonsWare

【讨论】:

Android 应用无需选中此复选框即可向后兼容。 确实如此。但是,如果您在创建项目时选中“向后兼容性(Appcompat)”框,它会以已经适合向后兼容的方式构建项目。 选中该复选框创建的活动不比未选中该复选框的活动向后兼容。选中该复选框可为您的应用提供特定的外观和感觉,该外观将在某些旧设备上保留该外观和感觉;未选中该复选框意味着您的外观的某些方面在 Android 5.0 之前的设备上会有所不同。不过,这不会影响 Activity 的核心功能。 我刚刚检查以确保,看来您是完全正确的。刚开始研究的时候,一直以为它不会像你说的那样改变核心功能,而是增加了很多不必要的库(如果你不关心向后兼容的话),事实并非如此。谢谢你纠正我!【参考方案2】:

向后兼容性允许您在应用中使用某些向后兼容的功能。他们将能够在以前版本的 Android 上工作。

Android 支持库提供了许多未内置在框架中的功能的向后兼容版本。 (Android Support Library website)

例如,将使用AppCompatActivity 而不是Activity,并且是“向后”兼容的东西。它可以一直使用到 API 级别 15。

【讨论】:

Android 应用可以向后兼容,无需选中此复选框。 啊,我应该澄清一下。我的错。【参考方案3】:

您通常应该使用AppCompatActivity 来支持较旧的 Android 版本。如果您的应用不需要较旧的 android 版本,则只需使用 Activity

通常更推荐使用AppCompatActivity

【讨论】:

如上所述,此选项仅影响您的应用程序的外观,您也可以使用“just”Activity 来支持旧的安卓版本。

以上是关于Android Studio 中的向后兼容性是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Schema Registry 中的向后兼容性问题和不确定性

v3 mini 控制器的向后兼容性:错误膨胀类片段

从 BLE v4.2 到 4.0 的有效载荷大小的向后兼容性

为新指令集扩展优化编译的代码的向后兼容性

升级 Newtonsoft.JSON 是不是存在任何已知的向后兼容性问题?

xml 保持与XML的向后兼容性