【问题标题】:Why would I extend AppCompatActivity instead of Activity for Android 4.0 and Up?为什么我要扩展 AppCompatActivity 而不是 Android 4.0 及更高版本的 Activity?
【发布时间】:2017-09-01 13:34:50
【问题描述】:

当我为 Android 2.2 编写我的第一个 Android 应用程序时,我的活动必须使用 extends AppCompatActivity,因为在 Android 2.2 中不提供片段。

如今,许多为 Android 4.0 和更高版本编写的应用程序都使用 extends AppCompatActivity 而不是 extends Activity。既然 Android 4 支持 Fragments 和 Styles 还需要使用AppCompatActivity吗?

Android Studio 向导还会为AppCompatActivity 生成代码。

注意:这个问题不是关于一般的“AppCompat”(如 Android 6 权限支持,它只是关于活动和片段处理。

[更新] 我的问题真正是关于 concreate 示例,说明 android-4.0 下的 AppCompatActivity Activity 可以做什么,而不是带有if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.XXX) 的 android-4.0 Activity 不能做什么。我发现AppCompatActivity 添加了get/setSupportXXXX

到目前为止,我得到的唯一具体示例是使用 Material Design 视图。

【问题讨论】:

  • AppCompatActivity 以透明的方式启用了许多向后兼容功能。例如,实现 4.0 中不可用的 Material Design 视图和功能。因此,使用它仍然是一个好习惯。
  • 反对票有什么解释吗?谁应该将问题重新表述为“不使用 AppCompatActivity 的缺点是什么”更好?
  • 今天许多为 Android 4.0 和更高版本编写的应用程序都扩展了 AppCompatActivity。你确定???

标签: android android-appcompat


【解决方案1】:

AppCompatActivity 会定期得到改进(支持库更新)。普通的Activity类是静态的,代码只写过一次就不会更新了。

因此,无论 Android 版本如何,AppCompatActivity 几乎总是更好、更快、更新。

此外,稍后在 Android 5 等版本中添加了其他需要向后移植到 4.0 的功能。

【讨论】:

  • 你错过了 AppCompat 向后兼容的部分,而 appcompat 主题需要 AppCompatActivity 而不是 Activity
【解决方案2】:

自 2017 年以来,AppCompat-7 库对于托管 Lifecycle-Aware Components 的活动和片段至关重要

【讨论】:

    猜你喜欢
    • 2015-05-10
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    相关资源
    最近更新 更多