【问题标题】:Difference between extending LifecycleActivity,Activity,ActionbarActivity & AppCompactActivity?扩展 LifecycleActivity、Activity、ActionbarActivity 和 AppCompactActivity 的区别?
【发布时间】:2014-04-15 16:33:22
【问题描述】:

在 Android 中,扩展 Lifecycler Activity、Activity、ActionBarActivity 和 AppCompactActivity 的主要区别是什么?这些类在使用方面有何不同?

【问题讨论】:

标签: android android-fragments android-activity android-actionbar


【解决方案1】:
  • 扩展 ActionBarActivity 为您提供每个 API 级别的 ActionBars 功能 >= 7
  • 通过扩展Activity,您可以避免向您的项目添加额外的项目/库,但您将在低于 11 的 api 级别上缺少 ActionBar

编辑:更多细节:

ActionBarActivitySupport Library 的一部分。支持库用于在旧平台上提供新功能。例如,ActionBar 是在 API 11 中引入的,默认情况下是 Activity 的一部分(实际上取决于主题)。相比之下,旧平台上没有ActionBar。所以支持库添加了ActivityActionBarActivity)的子类,提供ActionBar的功能和ui

edit2:2015 年 4 月更新 - 支持库的 revision 22.1.0 中似乎不推荐使用 ActionBarActivity。应该改用AppCompatActivity

edit3: 2017 年 8 月更新 - LifecycleActivityLifecycleOwner 但是:

“由于架构组件处于 alpha 阶段,Fragment 和 AppCompatActivity 类不能实现它(因为我们不能添加一个 从一个稳定的组件到一个不稳定的 API)。直到 Lifecycle 是稳定的,LifecycleActivity 和 LifecycleFragment 类 提供方便。在 Lifecycles 项目完成后 发布,支持库片段和活动将实现 LifecycleOwner 接口; LifecycleActivity 和 LifecycleFragment 将 届时将被弃用。”

(复制自架构组件指南)

【讨论】:

  • "你会在下面的 api 级别缺少 ActionBar" 7
  • @m121212 ActionBar 是在 API 级别 11 中引入的。因此,通过扩展 Activity,您将只能在运行 Android 3.0 Honeycomb(API 级别 11)及更高版本的设备上使用它
  • 这不是真的,确实提供了支持库来支持低于11的api级别的功能(例如)
  • 你引用的那句话是指没有使用支持库的情况,因此你不会在api级别
  • 赞成这个答案。当然,有足够的文档可以阅读到我们生命的尽头,有时我们需要的是对事物的简明定义。
【解决方案2】:

如果你仔细看,你会看到这个

public class ActionBarActivity extends FragmentActivity
implements ActionBarDrawerToggle.DelegateProvider TaskStackBuilder.SupportParentable

您可以在此处阅读有关 FragmentActivity 的信息: http://developer.android.com/reference/android/support/v4/app/FragmentActivity.html

以及Activity和FragmentActivity的区别: Difference between Activity and FragmentActivity

此外,还有一些用于设置 actionBar 样式的新主题... https://developer.android.com/training/basics/actionbar/styling.html

Actionbar 是在 API 级别 11 中引入的。com.android.support:appcompat-v7:+ 是一个支持库,它允许您在运行 Android 3.0 或更低版本的设备的应用中拥有一个 ActionBar。因此,如果您需要低于 api 级别 11 的操作栏,您的 Activity 需要扩展 ActionBarActivity。

如果您的目标是 11 级及更高级别的 API,则无需扩展 ActionBarActivity 并引用 AppCompat。您可以简单地扩展 Activity,默认情况下您将拥有 actionabr。

Android Studio 默认项目将其自动包含在依赖项中并扩展 ActionbarActivity 而不是 Activity 以便使用它。

【讨论】:

    【解决方案3】:

    ActionBarActivitySupportActionBarActivity 具有通用Activity 中没有的其他方法和属性。例如,添加选项卡的方法出现在 ActionBarActivity 中,而不是在通用 Activity 中。

    主要区别在于您没有在通用 Activity 上获得 ActionBar

    【讨论】:

    • 如果对使用操作栏不感兴趣怎么办?它是否比 Simple Activity 有一些性能改进,还是仅仅因为 actionbar 更好用?
    • IDK 如果 actionbaractivity 与非活动相比有性能改进
    • 谢谢。我仍然对在我未来的应用程序中使用什么以及更推荐什么感到困惑。
    • 如果你不想使用ActionBarActivity,你应该使用FragmentActivity...查看我的帖子,它描述了ActionBarActivity背后的逻辑。
    • 不用担心使用什么,它可以很容易地向现有应用程序添加操作栏。也许 10 分钟您只需将代码更改为扩展 actionbaractivity,然后修复导入和任何其他细微错误。
    【解决方案4】:

    ActionBarActivity 拥有更多支持库和更好地使用 api 11 提供的新主题。

    “在其最基本的形式中,操作栏在左侧显示活动的标题和应用程序图标。即使在这种简单的形式中,操作栏对于所有活动都非常有用,可以告知用户他们在哪里以及为您的应用保持一致的身份。”

    【讨论】:

      【解决方案5】:

      当您来到 Actionbaractivity 时,您正在使用 Android 支持库。所以支持库的用途是您的应用程序可以支持最大数量的设备。支持库为您的应用程序提供了向后兼容的能力。 Actionbaractivity 为您提供了多种功能,例如 Actionbardrawer 切换等。还有更多可用的支持库。看到这个链接..并分享给你的朋友...https://developer.android.com/tools/support-library/index.html

      【讨论】:

        猜你喜欢
        • 2017-09-29
        • 1970-01-01
        • 2012-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-29
        • 1970-01-01
        相关资源
        最近更新 更多