扩展LifecycleActivity,Activity,ActionbarActivity和AppCompactActivity之间的区别?


70

在Android中,扩展Lifecycler Activity,Activity,ActionBarActivity和AppCompactActivity之间的主要区别是什么?这些类在用法上有何不同?



在这里了解更多有关它的信息:stackoverflow.com/questions/23045472/…ActionBarActivity扩展了FragmentActivity并增加了对appcompat操作栏回传的支持。

Answers:


83

编辑:更多详细信息:

ActionBarActivity支持库的一部分。支持库用于在旧平台上提供新功能。例如ActionBar,API是在API 11中引入的Activity,默认情况下是的一部分(实际取决于主题)。相反ActionBar,在较旧的平台上则没有。因此,支持库添加了ActivityActionBarActivity)的子类,该子类提供ActionBar的功能和用户界面

edit2:2015年4月更新-支持库似乎ActionBarActivity已弃用revision 22.1.0AppCompatActivity应该改为使用。

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

“由于架构组件处于alpha阶段,所以Fragment和AppCompatActivity类无法实现它(因为我们无法将稳定组件中的依赖项添加到不稳定的API中。)在生命周期稳定之前,为了方便起见,提供了LifecycleActivity和LifecycleFragment类。 Lifecycles项目已发布,支持库的片段和活动将实现LifecycleOwner接口;届时将不推荐LifecycleActivity和LifecycleFragment。”

(从体系结构组件指南中复制)


2
“您在以下api级别上将缺少ActionBar”
12

@ m121212 ActionBar是在API级别11中引入的。因此,通过扩展Activity,您只能在运行Android 3.0 Honeycomb(API级别11)及更高版本的设备上使用它
stan0'1

这是不正确的,确实提供了支持库来支持低于11的api级别的功能(例如)
m121212 2015年

您引用的句子是指不使用支持库的情况,因此api级别<11上没有动作栏。您将有原来的活动专为那些API级别
stan0

4
赞成这个答案。当然,有足够的文档可以阅读,直到我们生活的尽头,有时我们所需要的只是对事物的简略定义。
2015年

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之间的区别: Activity与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。

如果您的目标是api级别11和更高级别,则不需要扩展ActionBarActivity并引用AppCompat。您可以简单地扩展Activity,并且默认情况下将具有actionabr。

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


4

ActionBarActivitySupportActionBarActivity有额外的方法和不在一个通用的特性Activity。例如添加标签的方法存在于ActionBarActivity而不是通用Activity

主要的区别是您没有ActionBar通用的Activity


如果不想使用操作栏怎么办?它是否相对于简单活动有一些性能改进,还是仅由于actionbar而使其更好使用?
Umer Kiani 2014年

如果actionbaractivity与不活动相比性能有所提高,则为IDK
danny117

谢谢。我仍然对将来的应用程序中使用什么以及更推荐的内容感到困惑。
Umer Kiani 2014年

如果您不想使用ActioBarActivity,则应该使用FragmentActivity ...检查我的帖子,它描述了ActionBarActivity背后的逻辑。
vanste25 2014年

不用担心使用什么功能可以很容易地将操作栏添加到现有应用中。大约10分钟,您只需更改代码即可扩展actionbaractivity,然后修复导入和其他细微差别。
danny117

1

ActionBarActivity只是拥有更多的支持库和对api 11中可用的较新主题的更好利用。

“操作栏以最基本的形式显示了活动的标题和左侧的应用程序图标。即使采用这种简单的形式,操作栏也可用于所有活动,以告知用户其所在位置并保持一致您应用的标识。”


1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.