I thought Activity was deprecated
So for API Level 22 (with a minimum support for API Level 15 or 16), what exactly should I use both to host the components, and for the components themselves? Are there uses for all of these, or should I be using one or two almost exclusively?
Activity is the baseline. Every activity inherits from
Activity, directly or indirectly.
FragmentActivity is for use with the backport of fragments found in the
support-v13 libraries. The native implementation of fragments was added in API Level 11, which is lower than your proposed
minSdkVersion values. The only reason why you would need to consider
FragmentActivity specifically is if you want to use nested fragments (a fragment holding another fragment), as that was not supported in native fragments until API Level 17.
AppCompatActivity is from the
appcompat-v7 library. Principally, this offers a backport of the action bar. Since the native action bar was added in API Level 11, you do not need
AppCompatActivity for that. However, current versions of
appcompat-v7 also add a limited backport of the Material Design aesthetic, in terms of the action bar and various widgets. There are pros and cons of using
appcompat-v7, well beyond the scope of this specific Stack Overflow answer.
ActionBarActivity is the old name of the base activity from
appcompat-v7. For various reasons, they wanted to change the name. Unless some third-party library you are using insists upon an
ActionBarActivity, you should prefer
So, given your
minSdkVersion in the 15-16 range:
If you want the backported Material Design look, use
If not, but you want nested fragments, use
If not, use
Just adding from comment as note:
FragmentActivity, so anyone who needs to use features of
FragmentActivity can use