• Android面试题之一

    发布:51Code 时间: 2016-11-23 16:26

  • 在接下来的一段时间,笔者将收集一些常见面试题,综合网上资料的整理,将其总结出来和大家分享,希望大家提出宝贵意见以便及时更正。 下面带给大家的是Android面试题之一。...

  • 在接下来的一段时间,笔者将收集一些常见面试题,综合网上资料的整理,将其总结出来和大家分享,希望大家提出宝贵意见以便及时更正。 下面带给大家的是Android面试题之一。

    一、Activity、Service、BroadcastReceiver的作用

    1. Activity是Android四大组件中最基本的组件,是程序与用户交互的窗口,代表一个用户所能看到的屏幕,它具有自己的生命周期,由系统控制。它可以用来显示控件、监听系统事件(按键事件、触摸屏事件等)、为保持各界面的状态做很多持久化的事情。

    2. 一个Service 是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序等。比如音乐播放器就是启动一个Service来保持音乐在后台的播放。所以,Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。

    3. Broadcast(广播)是一种广泛运用的在应用程序之间传输信息的机制。BroadcastReceiver代表广播接收器,是对发送出来的 Broadcast进行过滤接受并响应的一类组件。广播接收器没有用户界面,然而,它们可以启动一个activity或service 来响应它们收到的信息,或者用NotificationManager 来通知用户。

    二、显式intent和隐式intent的区别是什么

    显式Intent:对于明确指出了目标组件名称的Intent,我们称之为显式Intent。

    隐式Intent:对于没有明确指出目标组件名称的Intent,则称之为隐式Intent。

    显式Intent直接用组件的名称定义目标组件,这种方式很直接。但是由于开发人员往往并不清楚别的应用程序的组件名称,因此,显式Intent更多用于应用程序内部传递消息。比如在某应用程序内,一个Activity启动一个Service。

    隐式Intent恰恰相反,它不会用组件名称定义需要激活的目标组件,它更广泛地用于在不同应用程序之间传递消息。

    另外,在显式Intent消息中,决定目标组件的唯一要素就是组件名称,一旦名称确定,就不需要其他内容即可找到相应组件。 但在隐式Intent中需要借助过滤器IntentFilter 来寻找与之相匹配的组件。

    三、怎么将一个Activity封装成对话框的样子? 半透明的样子?长按Menu菜单的样子?

    1. 封装成对话框的样子:给activity加上如下属性android :theme="@android:style/Theme.Dialog"

    2.封装成半透明的样子:给activity加上如下属性   android:theme="@android:style/Theme.Translucent"

    3.封装成长按菜单的样子:   重写onKeyDown()和onKeyLongPress()方法,在onKeyDown中对menu键调用event.startTracking()方法跟踪,这样长按Menu键会回调onKeyLongPress()方法,在里面弹出对话框式的activity即可。

    四、介绍一下Android系统的体系结构   从上至下包括应用层(Applications)、应用框架层(Application Framework)、系统运行库层(Libraries and Android Runtime)和Linux内核层(Linux Kernel)。

    1.应用层包含开发者自己开发的一些应用和Google已经绑定的一些核心应用。比如Email客户端、浏览器、联系人、日历等等。

    2. 应用框架层就是应用开发者所必须了解API。该层提供了很多组件和管理器,比如活动管理器(Activity Manager)、窗口管理器(Window Manager)、内容提供器(Content Providers)、视图系统(View System)、包管理器(Package Manager)等等,那么开发者基于该层进行开发,就容易多了。

    3. 系统运行库层是一些底层C/C++库,主要包括Bionic系统C库(C语言标准库,系统最底层的库)、多媒体库(Media Framework)、SGL(2D图形引擎库)、SSL(位于TCP/IP协议与各种应用层协议之间,提供数据通信支持)、OpenGL ES 1.0(3D效果支持)、SQLite(关系数据库)、Webkit(Web浏览器引擎)、FreeType(位图bitmap及矢量图vector)。

    4. Linux内核主要是作为硬件和软件栈之间的抽象层,内核层提供如下一些驱动:显示驱动(Display Driver)、键盘驱动(Keyboard Driver)、Flash内存驱动(Flash Memory Driver)、照相机驱动(Camera Driver)、音频驱动(Audio Driver)、蓝牙驱动(Bluetooth Driver,基于IEEE 802.15.1)、WiFi驱动、Binder IPC驱动(Android的一个特殊驱动程序,具有单独的设备节点,提供进程间通信)、Power Management(电源管理)。从软件角度看,Linux内核就是“硬件”。

    五、一条最长的短信息约占多少 byte?

    英文:160字节。中文:70个汉字即140字节,还有20字节用来标识是中文短信。


  • 上一篇:移动应用丰富动效的六种通用方式

    下一篇:Android面试题之二

网站导航
Copyright(C)51Code软件开发网 2003-2019 , 沪ICP备05003035号-6