我们写一个Activity往往继承自Activity或者FragmentActivity或者ActionBarActivity或者AppCompatActivity
第一代:
Activity 发展到3.0之后,可以使用fragment了,但是support v4 提供了1.6~3.0的fragment兼容,所以如果需要用兼容版的fragment,则需要继承support v4提供的FragmentActivity。
嵌套fragment(fragment内部含fragment)的功能在4.2之后才支持。
所以有以下规则:
app最低支持版本>4.2 可以直接使用Activity
app最低支持版本在3.0-4.2,并且不使用嵌套fragment 可以直接使用Activity
app最低支持版本在3.0-4.2,并且要使用嵌套fragment 得用 FragmentActivity
app最低版本小于3.0,使用fragment,得用FragmentActivity
第二代:
而后一点点时间之后,3.0(大概)出现的ActionBar也被向前支持了,这次是出现在support v7里,如果需要使用兼容版的actionbar,则继承support v7提供的ActionBarActivity(它是继承FragmentActivity的)。再然后5.0提供了很多很多新东西,于是support v7也更新了,出现了AppCompatActivity , AppCompatActivity为2.1提供了Material Design的外观,toolbar,widdget着色等功能。所以官方已经把
ActionBarActivity废弃了,用AppCompatActivity取代。
此时我们的选择就是AppCompatActivity
AppCompatActivity内部实现原理其实是通过AppCompatDelegate 来完成的。AppCompatDelegate是一个可以放在任意Activity中,并且回调相应生命周期的类,在不使用AppCompatActivity的情况下,也可以得到一致的主题与颜色(虽然使用AppCompatActivity仍然是最简单的方法)。
第一代:
Activity 发展到3.0之后,可以使用fragment了,但是support v4 提供了1.6~3.0的fragment兼容,所以如果需要用兼容版的fragment,则需要继承support v4提供的FragmentActivity。
嵌套fragment(fragment内部含fragment)的功能在4.2之后才支持。
所以有以下规则:
app最低支持版本>4.2 可以直接使用Activity
app最低支持版本在3.0-4.2,并且不使用嵌套fragment 可以直接使用Activity
app最低支持版本在3.0-4.2,并且要使用嵌套fragment 得用 FragmentActivity
app最低版本小于3.0,使用fragment,得用FragmentActivity
第二代:
而后一点点时间之后,3.0(大概)出现的ActionBar也被向前支持了,这次是出现在support v7里,如果需要使用兼容版的actionbar,则继承support v7提供的ActionBarActivity(它是继承FragmentActivity的)。再然后5.0提供了很多很多新东西,于是support v7也更新了,出现了AppCompatActivity , AppCompatActivity为2.1提供了Material Design的外观,toolbar,widdget着色等功能。所以官方已经把
ActionBarActivity废弃了,用AppCompatActivity取代。
此时我们的选择就是AppCompatActivity
我们打开ActionBarActivity源码看一下,发现ActionBarActivity他就是AppCompatActivity的一个子类,没修过任何内容
package android.support.v7.app;
/**
* @deprecated Use {@link android.support.v7.app.AppCompatActivity} instead.
*/
@Deprecated
public class ActionBarActivity extends AppCompatActivity {
}
AppCompatActivity内部实现原理其实是通过AppCompatDelegate 来完成的。AppCompatDelegate是一个可以放在任意Activity中,并且回调相应生命周期的类,在不使用AppCompatActivity的情况下,也可以得到一致的主题与颜色(虽然使用AppCompatActivity仍然是最简单的方法)。
参考文献
https://www.zhihu.com/question/35709367/answer/64134667
http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0422/2774.html
原本,有个视频不错
http://android-developers.blogspot.hk/2015/04/android-support-library-221.html