1. 概述
在开发过程中,我们有时候会让子类继承Activity,有时候会继承AppCompatActivity,其实这两者会有一些不同的,那么接下来我们就让MainActivity分别继承Activity和AppCompatActivity,然后打印下activity_main中的ImageView,观察打印结果到底有有什么不同。
2. 打印结果:
继承Activity,打印结果如下:
Log.e("TAG", "" + mImageIv); // ImageView
继承AppCompatActivity,打印结果如下:
Log.e("TAG", "" + mImageIv); // AppCompatImageView
3. 不同点
AppCompatActivity:
1>:主要是为了兼容低版本的一些问题;
比如说在activity_main布局中写一个ImageView控件,然后分别让MainActivity继承Activity和AppCompatActivity,然后打印 image_view这个对象:
会发现:
继承Activity,打印结果如下:
Log.e("TAG", "" + mImageIv); // ImageView
继承AppCompatActivity,打印结果如下:
Log.e("TAG", "" + mImageIv); // AppCompatImageView
也就是说AppCompatActivity兼容了很多低版本的一些东西,比如说ImageView、TextView、Button、MD5.0的一些新控件它都做了一些兼容的:如下图所示:
图片.png
4. 分析原因
至于二者为什么会有区别,可以参考我的这篇文章
AppCompatActivity的setContentView的加载流程分析