更多Java培训学习资料,请登录尚硅谷网站下载:www.atguigu.com,学习交流QQ群13群:234782055
1、描述一下android的系统架构
android系统架构分从下往上为linux 内核层、运行库、应用程序框架层、和应用程序层。
Linux kernel:
负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能。
Libraries和 android Runtime:
Libraries:即c/c++函数库部分,大多数都是开放源代码的函数库,例如webkit(引擎),该函数库负责 android网页浏览器的运行,例如标准的c函数库libc、openssl、sqlite等,当然也包括支持游戏开发2dsgl和 3dopengles,在多媒体方面有mediaframework框架来支持各种影音和图形文件的播放与显示,例如mpeg4、h.264、mp3、 aac、amr、jpg和png等众多的多媒体文件格式。
Runtime:负责解释和执行生成的dalvik格式的字节码。
Application framework(应用软件架构):
java应用程序开发人员主要是使用该层封装好的api进行快速开发。applications:该层是java的应用程序层,android内置googlemaps、e-mail、即时通信工具、浏览器、mp3播放器等处于该层,java开发人员开发的程序也处于该层,而且和内置的应用程序具有平等的位置,可以调用内置的应用程序,也可以替换内置的应用程序。
应用程序层:
android应用程序使用框架的api并在框架下运行,这就带来了程序开发的高度一致性,另一方面也告诉我们,要想写出优质高效的程序就必须对整个 applicationframework进行非常深入的理解。精通applicationframework,你就可以真正的理解android的设计和运行机制,也就更能够驾驭整个应用层的开发。
总结:
下层为上层服务,上层需要下层的支持,调用下层的服务,这种严格分层的方式带来的极大的稳定性、灵活性和可扩展性,使得不同层的开发人员可以按照规范专心特定层的开发。
2、Dalvik和标准Java虚拟机之间的主要差别?
Dalvik和标准Java虚拟机(JVM)之间的首要差别之一,就是Dalvik基于寄存器,而JVM基于栈。
Dalvik和Java之间的另外一大区别就是运行环境——Dalvik经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个 Dalvik应用作为一个独立的Linux进程执行。
(1)虚拟机很小,使用的空间也小;
(2)Dalvik没有JIT编译器;
(3)常量池已被修改为只使用32位的索引,以简化解释器;
(4)它使用自己的字节码,而非Java字节码。
3、Manifest.xml文件中主要包括哪些信息?
答:manifest:根节点,描述了package中所有的内容。
User-sdk:指定支持的手机系统的最小版本
application:包含package中application级别组件声明的根节点。
activity:Activity是用来与用户交互的主要工具。
receiver:IntentReceiver能使的application获得数据的改变或者发生的操作,即使它当前不在运行。
service:Service是能在后台运行任意时间的组件。
provider:ContentProvider是用来管理持久化数据并发布给其他应用程序使用的组件。
uses-permission:请求你的package正常运作所需赋予的安全许可。
permission:声明了安全许可来限制哪些程序能你package中的组件和功能。
instrumentation:声明了用来测试此package或其他package指令组件的代码。