今日十问(五))

1、什么是Android的四层体系架构?
 <1>系统核心层(Linux Kernel)
  Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi驱动、电源管理等;
 <2>执行层C/C++函数库层(Libraries)及Android Runtime
  这一层通过一些C/C++库来为Android系统提供了主要的特性支持。
 <3>应用程序框架层(Application FrameWork)
  这一层主要提供了构建应用程序时可能用到的各种 API,Android自带的一些核心应用就是使用这些API完成的, 开发者也可以通过使用这些API来构建自己的应用程序。
 <4>应用程序层(Applications)
  所有安装在手机上的应用程序都是属于这一层的。
2、什么是Activity?
 一个Activity通常就是一个单独的屏幕,它上面可以显示一些UI界面,可也以实现与用户的交互,获得并处理用户在屏幕上的操作,比如:点击、长按等。所有应用的Activity都继承于android.app.Activity类。
3、Android目录结构。
 <1>src:开发人员源码放置目录;
 <2>gen:自动生成R.java,所有的资源文件都会在R.java文件中以final static内部类的形式被注册。所以可以通过R.id,R.layout等形式来访问资源;
 <3>assets:资产目录,在这个目录中放置的资源文件,不会在R.java文件中被注册。一般程序中的音频或视频文件可以放置在这个目录下;
 <4>bin:编译后的class等文件在此目录。系统自动生成APK;
 <5>libs:第三方jar包;
 <6>res:资源文件,是Android编程中最重要的目录。所有的资源都定义在这个目录下,前面提到的R.java中的内容也是根据这个目录下的文件自动生成的。这个目录下还有很多子目录,图片放在drawable目录下,布局放在layout目录下,字符串放在values目录下;
 <7>drawable:图片放置的目录,Android中资源的文件名【a~z0~9_.】,不能以数字和大写字母开头;
 <8>layout:布局文件放置的目录;
 <9>menu:菜单文件放置的目录;
 <10>values:字符串、尺寸等文件放置的目录;
 <11>AndroidManifest.xml:Android清单文件——是Android开发中非常重要的文件。
  (1)该文件中定义了本APP的版本号;
  (2)适用的手机操作系统最大及最小的兼容版本号;
  (3)整个项目中每写一个组件,都需要在该清单文件中注册;
  (4)运行本程序的权限等等。
 <12>project.properties:这个文件通过一行代码指定了编译程序时所使用的SDK版本。
4.res和assets目录的不同?
 <1>是否在R.java文件中被注册;
 <2>res所放的文件类型是规定好的,而assets目录下放置的文件类型不限制;
 <3>访问方法不同。res中文件使用R.内部静态类.id来访问;而assets中的文件通过IO流来访问;
 <4>assets与res/raw目录下的资源在编译打包时,不会被编译成二进制文件,所以一般在该目录下放置音频、视频等文件。
5.Dalvik VM与Java VM的区别?
 <1>Dalvik和标准Java虚拟机首要差别:
  (1)Dalvik基于寄存器;
  (2)JVM基于栈;
  基于寄存器的虚拟机对于更大的程序来说,在他们编译的时候,花费的时间更短。
 <2>Dalvik和Java字节码的区别:
  (1)Dalvik执行.dex格式的字节码;
  (2)JVM执行.class格式的字节码。
 <3>Dalvik和Java SDK的SDK不同;
 <4>Dalvik和Java运行环境的区别:
  (1)Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭;
  (2)Dalvik虚拟机在android2.2之后使用JIT(Just-In-Time)技术,与传统的JIT并不完全相同;
  (3)Dalvik虚拟机有自己的bytecode,并非使用Java bytecode。
6.Android中JAVA包功能描述。
 android.app:提供高层程序模型、提供基本的运行环境;
 android.content:对设备上的数据进行访问和发布的类;
 android.database:通过内容提供者浏览和操作数据库;
 android.graphics:底层的图形库;
 android.location:定位和相关服务的类;
 android.media:管理多种音频、视频的媒体接口;
 android.ney:提供帮助网络访问的类;
 android.os:提供了系统服务、消息传输、IPC机制;
 android.opengl:提供OpenGL的工具;
 android.provider:提供了类访问Android内容提供者;
 android.telephony:提供与拨打电话相关的API交互;
 android.view:提供基础的用户界面接口框架;
 android.util:涉及工具性的方法,例如时间日期的操作;
 android.webkit:默认浏览器操作接口;
 android.widget:包含各种UI元素在应用程序的屏幕中使用。
7、Android程序的核心组件有哪些?
 View:界面视图、组织UI控件
 Intent:意图,支持组件间通信
 Activity:处理界面与UI互动
 Content Provider:存储共享数据
 IntentReceiver:接受信息及事件处理
 Service:后台服务(如硬件与驱动的服务)
8、Activity的生命周期。
 void onCreate(Bundle savedInstanceState)
 void onStart()
 void onRestar()
 void onRestart()
 void onPause()
 void onStop()
 void onDestory()
9、Android中的日志工具类Log提供了哪些方法?
 <1>Log.v()
  用于打印那些最为琐碎的,意义最小的日志信息。对应级别verbose(啰嗦的),是Android日志里面级别最低的一种。
 <2>Log.d()
  用于打印一些调试信息,这些信息对调试程序和分析问题是有帮助的。对应级别debug,比verbose高一级。
 <3>Log.i()
  用于打印一些比较重要的数据,这些数据应该是你非常想看到的,可以帮你分析用户行为。对应级别info,比debug高一级。
 <4>Log.w()
  用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下这些出现警告的地方。对应级别warn,比info高一级。
 <5>Log.e()
  这个方法用于打印程序中的错误信息,比如程序进入到catch语句中。如果有错误信息打印出来了,说明程序出现了严重的问题,必须尽快修复。对应级别error,比warn高一级。
10、Android的打包过程是什么?
   jdk    dx.bat   aapt        签名jarsigner
 .java -----> .class ------>.dex(res,assets,androidmanifest.xml)------->.apk--------->final apk

原文地址:https://www.cnblogs.com/android-blogs/p/5684501.html