在Android中,扩展Lifecycler Activity,Activity,ActionBarActivity&的主要区别是什么? AppCompactActivity?这些类在使用方面有何不同?
答案 0 :(得分:82)
ActionBarActivity
为您提供每个API级别的ActionBar
功能> = 7 Activity
,您可以避免向项目中添加其他项目/库,但是您在api级别低于11时缺少ActionBar
修改:更多详情:
ActionBarActivity
是Support Library的一部分。支持库用于在旧平台上提供更新的功能。例如,ActionBar
是在API 11中引入的,默认情况下是Activity
的一部分(实际上取决于主题)。相比之下,较旧的平台上没有ActionBar
。因此,支持库添加了一个Activity
(ActionBarActivity
)的子类,它提供了ActionBar
的功能和ui
edit2 :2015年4月更新 - 看起来支持库的ActionBarActivity
中不推荐使用revision 22.1.0
。应该使用AppCompatActivity
。
edit3: 2017年8月更新 - LifecycleActivity为LifecycleOwner但是:
"由于架构组件处于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)
ActionBarActivity
或SupportActionBarActivity
具有不在通用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