您的位置:首页 > 职场人生

Android笔试面试题(三)

2015-04-13 10:55 218 查看
21 mvc模式的原理,它在android中的运用?

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

Model(模型)表示应用程序核心(比如数据库记录列表)。

View(视图)显示数据(数据库记录)。

Controller(控制器)处理输入(写入数据库记录)。



在android中mvc的具体体现如下:

1)视图层(view):一般采用xml文件进行界面的描述,在android中也可以使用javascript+html等的方式作为view层,当然这里需要进行java和javascript之间的通 信,幸运的是,android提供了它们之间非常方便的通信实现。

2)控制层(controller):android的控制层的重 任通常落在了众多的acitvity的肩上,这句话也就暗含了不要在acitivity中写代码,要通过activity交割model业务逻辑层处理, 这样做的另外一个原因是android中的acitivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。

3)模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,当然对业务计算等操作也是必须放在的该层的。

22 如何退出Activity?如何安全退出已调用多个Activity的Application?

对于单一Activity的应用来说,退出很简单,直接finish()即可。当然,也可以用killProcess()和System.exit()这样的方法。但是,对于多Activity的应用来说,在打开多个Activity后,如果想在最后打开的Activity直接退出,上边的方法都是没有用的,因为上边的方法都是结束一个Activity而已。

现提供几个方法,供参考(为了编程方便,最好定义一个Activity基类,处理这些共通问题。):

1)抛异常强制退出:

该方法通过抛异常,使程序Force Close。验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出Force
Close的窗口。

2)记录打开的Activity:

每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。

3)发送特定广播:

在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。

4)递归退出

在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。

23 ContentProvider是如何实现数据共享的?

ContentProvider是安卓平台中,在不同应用程序之间实现数据共享的一种机制。一个应用程序如果需要让别的程序可以操作自己的数据,即可采用这种机制。并且此种方式忽略了底层的数据存储实现,ContentProvider提供了一种统一的通过Uri实现数据操作的方式。其步骤为:

1) 在当前应用程序中定义一个ContentProvider。

2.)在当前应用程序的AndroidManifest.xml中注册此ContentProvider

3.)其他应用程序通过ContentResolver和Uri来获取此ContentProvider的数据。 ContentResolver提供了诸如insert(), delete(), query()和update()之类的方法,用于实现对ContentProvider中数据的存取操作。

24 DDMS和TraceView的区别?

DDMS是一个程序执行查看器,在里面可以看见线程和堆栈等信息,TraceView是程序性能分析器。

25 android中listview的优化?

ListView优化大致从以下几个角度:

1)复用已经生成的convertView;

2)添加viewHolder类;

3)缓存数据(图片缓存);

4)分页加载。

引用:http://blog.fangjie.info/listview的性能优化/

26 两个Activity之间怎么传递数据?

1 )基于消息的通信机制
:Intent Bundler,Extra。

2 )利用静态数据,public static
成员变量。

3) 基于外部存储的传输,File/Prefernce/Sqlite,或ContentProvider。

4 )基于IPC的通信机制:AIDL接口。

27 Intent可以传递哪些类型数据?

1) Intent/Bundle支持传递基本类型的数据和基本类型的数组数据,以及String/CharSequence类型的数据和String/CharSequence类型的数组数据。
2)Intent/Bundle还可以传递Parcelable(包裹化,邮包)和Serializable(序列化)类型的数据,以及它们的数组/列表数据。所以要让非基本类型和非String/CharSequence类型的数据通过Intent/Bundle来进行传输,我们就需要在数据类型中实现Parcelable接口或是Serializable接口。

28 Android程序与Java程序的区别?
Android的应用层上的应用程序是用Java编写的,以Java作为开发语言,但是,Java并不等同于Android,因为Android SDK引用了Java
SDK的大部分,少数部分被Android SDK所抛弃。

29 AndroidManifest.xml文件中主要包括哪些信息?

uses-permission:请求你的package正常运作所需赋予的安全许可。

permission: 声明了安全许可来限制哪些程序能你package中的组件和功能。

instrumentation:声明了用来测试此package或其他package指令组件的代码。

application:包含package中application级别组件声明的根节点。

activity:Activity是用来与用户交互的主要工具。

receiver:IntentReceiver能使的application获得数据的改变或者发生的操作,即使它当前不在运行。

service:Service是能在后台运行任意时间的组件。

provider:ContentProvider是用来管理持久化数据并发布给其他应用程序使用的组件。

30 什么是Android数字签名?

1) 所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序。

2) Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证。

3) 如果要正式发布一个Android ,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布。

4) 数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: