Activity,FragmentActivity,ActionBarActivity,AppCompatActivity

我们写一个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


我们打开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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值