Activity vs FragmentActivity vs AppCompatActivity

Activity应该是每一个Android开发者第一个遇到的类吧,后来又看到了FragmentActivity,再后来又碰到了AppCompatActivity和ActionBarActivity,也许我们在开发者中会在不同的场景中使用以上不同的Activity类,但是要让我们清楚的说出它们的联系和区别,可能都会被这个问题懵一下,现在我们就来把他们的关系理清楚.

这几个类有一个基本的继承关系


Activity <- FragmentActivity <- AppCompatActivity <- ActionBarActivity


需要注意的是ActionBarActivity已经废弃了. 从上面的这个继承关系也大概可以了解这几个类的基本关系,Activity 是以上这各类的基类,所有的Activity子类都直接或间接的继承自Activity类.

FragmentActivity 是在support-v4和support-v13库中用来向后兼容Fragment的.AppCompatActivity 是在appcompat-v7库, 原则上它提供了对action bar的向后兼容. 在考虑什么场景具体使用哪个类时可以参考一下三个原则:

  • 如果你想向后兼容Material Design的外观,继承AppCompatActivity.

  • 如果不考虑Material Design,但是你想使用嵌套的Fragment, 继承FragmentActivity.

  • 如果没有以上需求,则继承Activity.

因为AppCompatActivity 继承自FragmentActivity ,如果你需要FragmentActivity的特性,原则上都可以使用AppCompatActivity.