您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > Android面试题大全_尚硅谷_张晓飞
“玩转”Java系列—————————————————————————————1【更多Java–Android资料下载,可访问尚硅谷(中国)官网下载区】题目:Android面试题大全一.Android入门1、描述一下android的系统架构android系统架构分从下往上为linux内核层、运行库、应用程序框架层、和应用程序层。Linuxkernel:负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能。Libraries和androidRuntime:Libraries:即c/c++函数库部分,大多数都是开放源代码的函数库,例如webkit(引擎),该函数库负责android网页浏览器的运行,例如标准的c函数库libc、openssl、sqlite等,当然也包括支持游戏开发2dsgl和3dopengles,在多媒体方面有mediaframework框架来支持各种影音和图形文件的播放与显示,例如mpeg4、h.264、mp3、aac、amr、jpg和png等众多的多媒体文件格式。Runtime:负责解释和执行生成的dalvik格式的字节码。Applicationframework(应用软件架构):java应用程序开发人员主要是使用该层封装好的api进行快速开发。applications:该层是java的应用程序层,android内置googlemaps、e-mail、即时通信工具、浏览器、mp3播放器等处于该层,java开发人员开发的程序也处于该层,而且和内置的应用程序具有平等的位置,可以调用内置的应用程序,也可以替换内置的应用程序。应用程序层:“玩转”Java系列—————————————————————————————2【更多Java–Android资料下载,可访问尚硅谷(中国)官网下载区】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是用来管理持久化数据并发布给其他应用程序使用的组件。“玩转”Java系列—————————————————————————————3【更多Java–Android资料下载,可访问尚硅谷(中国)官网下载区】uses-permission:请求你的package正常运作所需赋予的安全许可。permission:声明了安全许可来限制哪些程序能你package中的组件和功能。instrumentation:声明了用来测试此package或其他package指令组件的代码。二.Android的四大组件Activity相关1、什么是Activity?Activity是一个负责与用户交互的组件,Activity中所有操作都与用户密切相关,可以通过setContentView(View)来显示指定控件。在一个android应用中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。2、请描述一下Activity生命周期。onCreate(BundlesavedInstanceState):创建activity时调用。设置在该方法中,还以Bundle的形式提供对以前储存的任何状态的访问!onStart():activity变为在屏幕上对用户可见时调用。onResume():activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)。onPause():activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的,也是保护现场,压栈吧!onStop():activity被停止并转为不可见阶段及后续的生命周期事件时调用。onRestart():重新启动activity时调用。该活动仍在栈中,而不是启动新的活动。onDestroy():activity被完全从系统内存中移除时调用,该方法被调用“玩转”Java系列—————————————————————————————4【更多Java–Android资料下载,可访问尚硅谷(中国)官网下载区】3、如何退出Activity?如何安全退出已调用多个Activity的Application?在Android中退出程序比较麻烦,尤其是在多个Activity的程序中,在2.2之前可以采用如下代码退出程序:1.ActivityManageram=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);2.am.restartPackage(getPackageName());此种方法是一种最方便和最简单的退出程序的办法,但是在2.2和2.2之后就不能用了,一种常用的方法是自定义一个Activity的栈,在程序退出时将栈中的所有的Activity进行finish。还有一些其他的方式,在这可查看。4、如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?答:重写onSaveInstanceState()方法,在此方法中保存需要保存的数据,该方法将会在activity被回收之前调用。通过重写onRestoreInstanceState()方法可以从中提取保存好的数据5、activity在屏幕旋转时的生命周期答:不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次;设置Activity的android:configChanges=orientation时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次;设置Activity的android:configChanges=orientation|keyboardHidden时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。6、activity的启动模式有哪些?是什么含义?答:在android里,有4种activity的启动模式,分别为:“standard”(默认)“singleTop”“singleTask”“singleInstance”“玩转”Java系列—————————————————————————————5【更多Java–Android资料下载,可访问尚硅谷(中国)官网下载区】当应用运行起来后就会开启一条线程,线程中会运行一个任务栈,当Activity实例创建后就会放入任务栈中。Activity启动模式的设置在AndroidManifest.xml文件中,通过配置Activity的属性android:launchMode=设置。1.Standared模式(默认)我们平时直接创建的Activity都是这种模式的Activity,这种模式的Activity的特点是:只要你创建了Activity实例,一旦激活该Activity,则会向任务栈中加入新创建的实例,退出Activity则会在任务栈中销毁该实例。2.SingleTop模式这种模式会考虑当前要激活的Activity实例在任务栈中是否正处于栈顶,如果处于栈顶则无需重新创建新的实例,会重用已存在的实例,否则会在任务栈中创建新的实例。3.SingleTask模式如果任务栈中存在该模式的Activity实例,则把栈中该实例以上的Activity实例全部移除,调用该实例的newInstance()方法重用该Activity,使该实例处於栈顶位置,否则就重新创建一个新的Activity实例。4.SingleInstance模式当该模式Activity实例在任务栈中创建后,只要该实例还在任务栈中,即只要激活的是该类型的Activity,都会通过调用实例的newInstance()方法重用该Activity,此时使用的都是同一个Activity实例,它都会处于任务栈的栈顶。此模式一般用于加载较慢的,比较耗性能且不需要每次都重新创建的Activity。7、跟activity和Task有关的Intent启动方式有哪些?其含义?核心的IntentFlag有:FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_TOPFLAG_ACTIVITY_RESET_TASK_IF_NEEDEDFLAG_ACTIVITY_NEW_TASK如果设置,这个Activity会成为历史stack中一个新Task的开始。一个Task(从启动它的Activity到下一个Task中的Activity)定义了用户可以迁移的Activity原子组。Task可以移动到前台和后台;在某个特定Task中的所有Activity总是保持相同的次序。这个标志一般用于呈现“启动”类型的行为:它们提供用户一系列可以单独完成的事情,与启动它们的Activity完全无关。“玩转”Java系列—————————————————————————————6【更多Java–Android资料下载,可访问尚硅谷(中国)官网下载区】FLAG_ACTIVITY_CLEAR_TOP如果设置,并且这个Activity已经在当前的Task中运行,因此,不再是重新启动一个这个Activity的实例,而是在这个Activity上方的所有Activity都将关闭,然后这个Intent会作为一个新的Intent投递到老的Activity(现在位于顶端)中。FLAG_ACTIVITY_SINGLE_TOP如果设置,并且这个Activity已经在当前的Task中运行,因此,不再是重新启动一个这个Activity的实例,而是在这个Activity上方的所有Activity都将关闭,然后这个Intent会作为一个新的Intent投递到老的Activity(现在位于顶端)中。FLAG_ACTIVITY_RESET_TASK_IF_NEEDED如果设置这个标志,这个activity不管是从一个新的栈启动还是
本文标题:Android面试题大全_尚硅谷_张晓飞
链接地址:https://www.777doc.com/doc-6107381 .html