扩展LifecycleActivity,Activity,ActionbarActivity& AppCompactActivity?

时间:2014-04-15 16:33:23

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

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

5 个答案:

答案 0 :(得分:82)

修改:更多详情:

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

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

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

  

"由于架构组件处于alpha阶段,Fragment和   AppCompatActivity类无法实现它(因为我们无法添加   从稳定组件到不稳定API的依赖性)。直到   生命周期是稳定的,LifecycleActivity和LifecycleFragment类   为方便起见。生命周期项目结束后   发布,支持库片段和活动将实现   LifecycleOwner界面; LifecycleActivity和LifecycleFragment将   在那个时候被弃用。"

(从架构组件指南中复制)

答案 1 :(得分:7)

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

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

此外,还有一些针对样式动作栏的新主题...... https://developer.android.com/training/basics/actionbar/styling.html

Actionbar在API级别11中引入.com.android.support:appcompat-v7:+是一个支持库,允许您在应用程序中为在Android 3.0或更低版本上运行的设备安装ActionBar。因此,如果你需要api level 11以下的actionbar,你的Activity需要扩展ActionBarActivity。

如果您的目标是api级别11及以上,那么您不需要扩展ActionBarActivity并引用AppCompat。您可以简单地扩展Activity,默认情况下您将拥有actionabr。

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

答案 2 :(得分:4)

ActionBarActivitySupportActionBarActivity具有不在通用Activity中的其他方法和属性。例如,添加标签的方法存在于ActionBarActivity中,而不是通用Activity

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

答案 3 :(得分:1)

ActionBarActivity只有更多支持库,可以更好地使用api 11提供的新主题。

"在最基本的表单中,操作栏显示活动的标题和左侧的应用程序图标。即使在这种简单的形式中,操作栏对于所有活动都很有用,可以告知用户他们的位置,并为您的应用保持一致的身份。"

答案 4 :(得分:1)

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