在接下来的一段时间,我将收集一些常见面试题,综合网上资料加自己测试与理解,将其总结出来和大家分享,里面难免有一些问题,希望大家提出宝贵意见以便及时更正。

一、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面试题之一的更多相关文章

  1. 【Android面试】Android面试题集锦 (陆续更新)(最新2012-6-18) eoe上看到的

    ===============eoeAndroid社区推荐:======================= 1.Android开发新浪面试题[开发者必看哦]下载地址 http://www.eoeand ...

  2. 安卓Android面试题大全

    56个问题都是经常用到的,可以深入研究下,也是必须掌握的开发必备知识. 安卓Android面试题汇总 搜集了一些Android面试题目,供将要面试或者正在面试的朋友参考. 1, 谈谈你对Activit ...

  3. Android 面试题总结

    Android 面试题总结(不断更新) 1.INETNT几种有关Activit的启动方式FLAG_ACTIVITY_BROUGHT_TO_FRONT 将ACTIVITY带到最前面FLAG_ACTIVI ...

  4. Android面试题整理【转载】

      面试宝典(5)  http://www.apkbus.com/android-115989-1-1.html 面试的几个回答技巧 http://blog.sina.com.cn/s/blog_ad ...

  5. 19、android面试题整理(自己给自己充充电吧)

    (转载,出处丢失,请原作者原谅,如有意见,私信我我会尽快删除本文) JAVA 1.GC是什么? 为什么要有GC?GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问 ...

  6. Android面试题基础(转)

    71道经典Android面试题和答案 1.下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存 B.内存回收程序负责释放无用内存 C.内存回收程序允许程序员直接释 ...

  7. Android面试题(文章内容来自他人博客)

    腾讯面试题 1.int a = 1; int result = a+++3<<2; 2.int a = 2; int result = (a++ > 2)?(++a):(a+=3); ...

  8. android面试题集1

    Android 面试题(有详细答案) 附带答案,共100分 一.选择题(30题,每题1.5分,共45分) 1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分类,按功 ...

  9. Android面试题收集(有具体答案)

    Android面试题目及其答案 1.Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 DVM指dalivk的虚拟机.每个Android应用程序都在它自己的进程中执行,都 ...

  10. 2017 Android 面试题 [ 基础与细节 ]

    2017 Android 面试题 [ 基础与细节 ] 感谢@chuyao抛出的这些问题,平时业务代码写多了,很多基础的东西变得含糊不清了,这次裸辞出来找工作确实没有之前顺利,顺便求上海Android开 ...

随机推荐

  1. Hadoop MR Job 关于如何控制Map Task 数量

    整理下,基本分两个方式: 一.对于大量大文件(大于block块设置的大小) 增大minSize,即增大mapred.min.split.size的值,原因:splitsize=max(minisize ...

  2. HTML+CSS笔记 CSS中级 一些小技巧

    水平居中 行内元素的水平居中 </a></li> <li><a href="#">2</a></li> &l ...

  3. jQuery validate入门

    <html> <head> <meta charset="utf8"></meta> </head> <body& ...

  4. 全新的ASP.NET !

    全新的ASP.NET ! 背景 最新版本的 ASP.NET 叫做 ASP.NET Core (也被称为 ASP.NET 5)   它颠覆了过去的 ASP.NET. 什么是 ASP.NET Core? ...

  5. 关于js的一些关键知识点(call,apply,callee, caller,clourse,prototypeChain)

    可能不少学习javascript在使用call,apply,callee时会感到困惑,以下希望对于你有所帮助: 1.~~~call ,apply是函数(函数对象)的方法:callee是函数argume ...

  6. Android系统设置— android.provider.Settings

    android.provider.Settings Intent intent = new Intent(android.provider.Settings.ACTION_SETTINGS); sta ...

  7. mrtg监控网络流量简单配置

    Mrtg服务器搭建(监控网络流量) [日期:2012-07-03] 来源:Linux社区  作者:split_two [字体:大 中 小]   [实验环境] 监控机:Red Hat linux 5.3 ...

  8. 2014年去哪儿网笔试题--有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来。

    有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来. 这两个文件内容如下: context.txt “并不是每个人都需要$(qunar)自己的粮食,$(f ...

  9. Create screenshots of a web page using Python and QtWebKit | Roland's Blog

    Create screenshots of a web page using Python and QtWebKit | Roland's Blog Create screenshots of a w ...

  10. 【网络协议】TCP中的四大定时器

    前言 对于每个TCP连接,TCP一般要管理4个不同的定时器:重传定时器.坚持定时器.保活定时器.2MSL定时器. 重传定时器 非常明显重传定时器是用来计算TCP报文段的超时重传时间的(至于超时重传时间 ...