-《第一行代码Android》(第2版)试题范围及答案//--------------------------------------------------------------第1章1.简述下Android系统的四层架构。1)Linux内核层:Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动。如显示驱动、音频驱动、照相机驱动、蓝牙驱动,Wi-Fi驱动、电源管理等2)系统运行库层:这一层通过一些C/C+库来为Android系统提供了主要的特性支持。如SQLite库提供了数据库库的支持,OpenGL/ES库提供了3D绘图的支持,webkit库提供了浏览器内核的支持等3)应用框架层:这一层主要提供了构建应用程序时可能用到的各种API,Android自带的一些核心应用就是使用这些API完成的、开发者也可以通过使用这些API来构建自己的应用程序4)应用层:所有安装在手机上的应用程序都是属于这一层的,比如系统自带的联系人、短信等程序,或者是你从Googleplay上下载的小游戏,当然还包括你自己开发的程序。2.简述下Androidver5.0、6.0、7.0、8.0各版本的系统代号和API版本号。版本号系统代号API5.0Lollipop216.0Marshmallow237.0Nougat248.0Oreo263.Android的四大组件有哪些?使用时需要注册到哪个文件中?1)Android系统四大组件分别是活动(activity)、服务(Server)、广播接收器(broadcastreceiver)和内容提供器(contentprovider),2)android新创建四大组件需要在Manifest文件中注册4.搭建Android开发环境需要哪些软件工具,试着列举出其中一套开发环境方案。方案1)JDK+AndroidSDK+AndroidStudio,还有虚拟机AVD等可以在安装完AndroidStudio之后在软件内下载。方案2)JDK+AndroidSDK+Eclipse+ADT。5.请写出缩略语SDK、AVD、DDMS的中、英文解释1)SDK:软件开发工具包。2)AVD:AndroidVirtualDevice,就是Android运行的虚拟设备,他是Android的模拟器识别。3)DDMS:DalvikDebugMonitorService,是Android开发环境中的Dalvik虚拟机调试监控服务。6.导入项目时需要对项目进行配置,涉及清单文件以及gradle的3个配置文件,请列举出这3个文件名称(含具体项目路径)。在“Android”过滤器下,这3个文件在GradleScript节点内:1)project\build.gradle2)Module\build.gradle3)gradle-wrapper.properties文件在“Project”过滤器下,这3个文件名称为:1)项目下面的build.gradle(即project\build.gradle)2)app下面的build.gradle(即Module\build.gradle)3)在项目文件目录,依次打开gradle/wrapper文件夹,并打开gradle-wrapper.properties文件7.试着写出创建一个简单活动HelloWorldActivity的基本代码。publicclassHelloWorldActivityextendsAppCompatActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.hello_world_layout);}}8.请说明,项目res目录下的各个子目录(drawable、layout、mipmap、values)的功能。1)drawable开头的文件夹都是用来放图片的。2)layout文件夹是用来放布局文件的。3)所有以mipmap开头的文件夹都是用来放应用图标的。4)所有以values开头的文件夹都是用来放字符串、样式、颜色等配置的。9.如果需要在gradle中加入一个外部类库appcompat-v7:27+,应如何配置依赖?请写出要配置的文件和相关代码。在项目app\build.gradle中添加相应的依赖库,如下:dependencies{compile'com.android.support:appcompat-v7:27.+'}10.app目录下的build.gradle文件的部分代码如下,请相应注释处给出功能解释。applyplugin:'com.android.application'//表示这是一个应用程序模块android{compileSdkVersion25//编译版本buildToolsVersion25.0.3//项目构建工具的版本defaultConfig{applicationIdcom.example.dell.ch_2_6//项目包名minSdkVersion22//最低兼容的Android版本targetSdkVersion25versionCode1//项目的版本号versionName1.0//项目的版本名testInstrumentationRunnerandroid.support.test.runner.AndroidJUnitRunner}buildTypes{release{minifyEnabledfalse//用来指定是否对项目的代码进行混淆false表示不混淆。proguardFiles//用来指定混淆时使用的规则文件。getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'//.txt是在AndroidSDK目录下的,里面是所有项目通用的混淆规则。//.pro是当前项目的根目录的,里面可以编写当前项目特有的混淆规则。}}}dependencies{compilefileTree(dir:'libs',include:['*.jar'])//本地依赖声明。androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',//远程依赖声明。{excludegroup:'com.android.support',module:'support-annotations'})compile'com.android.support:appcompat-v7:25.3.1'compile'com.android.support.constraint:constraint-layout:1.0.2'testCompile'junit:junit:4.12'//用于声明测试用例库的}11.请列举log工具的几个输出日志的常用方法,并简述其功能。1)Log.v()用于打印最为详细的日志信息。2)Log.d()用于打印一些调试信息。3)Log.i()用于打印一些比较重要的信息4)Log.w()用于打印一些警告信息5)Log.e()用于打印程序中的错误信息//-------------------------------21.简述下Activity的管理模式。Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称为返回栈(BackStack)。栈是一种“后进先出”的数据结构,默认情况下,新创建的活动会处于栈顶的位置,而当我们按下back键或调用finish()方法去销毁一个活动时,处于栈顶的活动就会出栈。2.简述下活动的四种状态。1)运行状态:活动处于栈顶时就处于运行状态;2)暂停状态:当活动不处于栈顶,但可见,就进入暂停状态;3)停止状态:当活动不处于栈顶,且完全不可见,就进入暂停状态,系统可能会暂时保存活动的状态,但也可能被系统回收;4)销毁状态:活动从返回栈中移除后就进入销毁状态。系统优先回收这种状态的活动。3.活动的生命周期包括7个回调函数,简述下活动的3个生存期都对应着哪些回调函数。1)完整生命周期:即从一个Activity从出现到消失,对应的周期方法是从onCreate()到onDestroy()。2)可见生命周期:当Activity处于可以用户看见的状态,但不一定能与用户交互时,将多次执行从onStart()到onStop()。3)前台生命周期:当Activity处于Activity栈最顶端,能够与其他用户进行交互时,将多次执行从onResume()到onPause()。4.活动时如何保存实例状态的。Activity中还提供了一个onSaveInstanceState()回调方法,这个方法可以保证在活动被回收之前一定会被调用,因此我们可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。5.活动的启动模式包括哪几种?standard、singleTop、singleTask和singleInstance6.如何将一个Activity设置成对话框的样式。答:第一种方法,在styles.xml文件中,可以新建如下的类似Dialog的style。stylename=“Theme.FloatActivity”parent=“android:style/Theme.Dialog”/style。第二种方法,在AndroidManifest.xml中在需要显示为窗口的Activity中添加如下属性:android:theme=“@style/Theme.FloatActivity”即可。也可以直接添加对应需要展示为Dialogstyle的Activity的android:theme属性为android:theme=“@android:style/Theme.Dialog”。7.两个Activity之间怎么传递数据?答:可以在Intent对象中利用Extra来传递存储数据。1)在Intent的对象请求中,使用putExtra(“键值对的名字”,”键值对的值”);Intentintent=newIntent(FirstActivity.this,SecondActivity.class);intent.putExtra(“testIntent”,data);2)在另外一个Activity中将Intent中的请求数据取出来:Intentintent=getIntent();Stringvalue=intent.getStringExtra(“testIntent”);//-------------------------------31.请说明布局文件中android:id=”@id/控件名”...与android:id=”@+id/控件名”...两者的区别。Android中的组件需要用一个int类型的值来表示,这个值也就是组件标签中的id属性值。id属性只能接受资源类型的值,也就是必须以@开头的值,例如,@id/控件名、@+id/控件名等。1)其中“@id/控件名”代表控件名为android系统中已存在的资源id,例如,已经定义在values\ids.xml文件中的id;2)”@+id/控件名”代表当R.java中存在名为name变量时,则该组件会使用该变量的值作为标识。如果不存在该变量,则添加一个新的变量,并为该变量赋相应的值。2.请简要列出Android中常用的几种布局名称(5种以上)LinearLayout(线性布局)、RelativeLayout(相对布局)、FrameLayout(帧布局)、AbsoluteLayout(绝对布局)、TableLayout(表格布局)、ConstraintLayout(约束性布局)3.假设已有一个布局文件title.xml,请以代码说明在一个布局中引入其它