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面试题之一的更多相关文章
- 【Android面试】Android面试题集锦 (陆续更新)(最新2012-6-18) eoe上看到的
===============eoeAndroid社区推荐:======================= 1.Android开发新浪面试题[开发者必看哦]下载地址 http://www.eoeand ...
- 安卓Android面试题大全
56个问题都是经常用到的,可以深入研究下,也是必须掌握的开发必备知识. 安卓Android面试题汇总 搜集了一些Android面试题目,供将要面试或者正在面试的朋友参考. 1, 谈谈你对Activit ...
- Android 面试题总结
Android 面试题总结(不断更新) 1.INETNT几种有关Activit的启动方式FLAG_ACTIVITY_BROUGHT_TO_FRONT 将ACTIVITY带到最前面FLAG_ACTIVI ...
- Android面试题整理【转载】
面试宝典(5) http://www.apkbus.com/android-115989-1-1.html 面试的几个回答技巧 http://blog.sina.com.cn/s/blog_ad ...
- 19、android面试题整理(自己给自己充充电吧)
(转载,出处丢失,请原作者原谅,如有意见,私信我我会尽快删除本文) JAVA 1.GC是什么? 为什么要有GC?GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问 ...
- Android面试题基础(转)
71道经典Android面试题和答案 1.下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存 B.内存回收程序负责释放无用内存 C.内存回收程序允许程序员直接释 ...
- Android面试题(文章内容来自他人博客)
腾讯面试题 1.int a = 1; int result = a+++3<<2; 2.int a = 2; int result = (a++ > 2)?(++a):(a+=3); ...
- android面试题集1
Android 面试题(有详细答案) 附带答案,共100分 一.选择题(30题,每题1.5分,共45分) 1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分类,按功 ...
- Android面试题收集(有具体答案)
Android面试题目及其答案 1.Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 DVM指dalivk的虚拟机.每个Android应用程序都在它自己的进程中执行,都 ...
- 2017 Android 面试题 [ 基础与细节 ]
2017 Android 面试题 [ 基础与细节 ] 感谢@chuyao抛出的这些问题,平时业务代码写多了,很多基础的东西变得含糊不清了,这次裸辞出来找工作确实没有之前顺利,顺便求上海Android开 ...
随机推荐
- SQL Server 动态行转列(轉載)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段; 方法二:使用拼接SQL, ...
- button 变成圆
btn.layer.cornerRdius = width/2.0;btn.layer.maskToBounds = width/2.0:
- Dos关闭进程命令
netstat -ao 查找占用端口的进程 taskkikk /pid 端口pid /f
- 寻找数列中第k大的数算法分析
问题描述:给定一系列数{a1,a2,...,an},这些数无序的,现在求第k大的数. 看到这个问题,首先想到的是先排序,然后直接输出第k大的数,于是得到啦基于排序的算法 算法一: #include&l ...
- textwrap——文本包裹和填充模块解析
textwrap模块提供了两个函数wrap()和fill(),以及TextWrapper类,以及另外一个工具函数dedent(). wrap()以及fill()都可以用来格式化一大段文 ...
- XCode里遇到 #include <XXX.h>file not found的解决方案
最近在学习如何在C++里调用Java方法,遇到提示 #include <XXX.h> file not found 的问题.也google了好久都没有找到合适的解决方案. 认真的研究了 ...
- django FileFIeld和ImageField 上传路径改写
def get_file_path(instance, filename): return 'file/document/%s/%s/%s' % (instance.period.code, inst ...
- 以程序的方式操纵NTFS的文件权限(陈皓)
http://blog.csdn.net/haoel/article/details/2905 http://blog.sina.com.cn/s/blog_7f91494101018nmn.html
- perl5 第三章 操作符
第三章 操作符 by flamephoenix 一.算术操作符二.整数比较操作符三.字符串比较操作符四.逻辑操作符五.位操作符六.赋值操作符七.自增自减操作符八.字符串联结和重复操作符九.逗号操作符十 ...
- Java面向对象的编程
类的多态性: Java语言中含有方法重载与成员覆盖两种形式的多态:(区别于c++) 方法重载:在一个类中,允许多个方法使用同一个名字,但方法的参数不同,完成的功能也不同. 成员覆盖:子类与父类允许具有 ...