-
在看《第一行代码 第2版》32页,这页讲述新建Activity ,有句话:“勾选Backwards Compatibility 表示会为项目启用向下兼容的模式”。还有这操作,为啥我新建Activity时就没有这个选项?
-
往前翻,找到书中搭建开发环境内容,找到图1.9,下图是电子版(共同进步下载)的很清晰。如果买的二手印刷版的可能不清晰,看不到。
![](https://img-blog.csdnimg.cn/20210311211928352.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poYW5namluMTEyMA==,size_16,color_FFFFFF,t_70)
可知本书用的是Android Studio 2.2 ,官网上已经不提供2.2版本下载了。我用的是Android Studio 3.4 版本,那到底哪个版本这个选项没有了?一番搜索没有找到答案。但是发现了新的知识点:
-
If false, this activity base class will be Activity instead of AppCompatActivity 就是说如果不勾选,新建的TestActivity将继承自Activity而不是AppCompatActivity。也就意味着AppCompatActivity的作用是兼容低版本android系统。
-
AppCompatActivity的包是android.support.v7.app。support库的功能之一就是兼容低版本android系统,关于这个功能,有下面这段描述:
我们开发的App需要支持的minSdkVersion=9,targetSdkVersion=11,在程序里使用了android 3.0 (API level 11)提供的ActionBar类,使用compileSdkVersion=11成功编译出apk。在android 3.0的设备上 完美运行,但是app在android 2.3的设备就会crash,报找不到ActionBar的错误。这很好理解,因为旧版 本上没有新版本里新增的类。为了避免使用了最新功能开发的app只能在最新系统的设备上运行的尴尬, 官方把新版系统framework中新增加的接口提出来放到了Android Support Library(支持包)中,开发者 在遇到上面的情况时,就可以使用支持包中具有同样功能的ActionBar类,这个支持包会打包进App里, 这样使用了新版本系统上功能的App也可以向后兼容以前的老系统版本设备了。使用支持包中的类除了 让我们免于判断App运行的系统版本外,还可以使App在各个版本保持同样的用户体验。如在5.0以下系统 使用material design。