android面试题整理(2)

浏览:
字体:
发布时间:2013-12-20 16:18:59
来源:
1、请解释下Android程序运行时权限与文件系统的权限的区别
运行时 Dalvik(Android授权)
文件系统 linux 内核授权
2、系统上安装了多种的浏览器,是否能指定某个浏览器访问指定的页面
在android程序中我们可以通过显示intent来启动浏览器,前提是要知道浏览器的packagename 和要启动的activity通过修改
intent.setClassName来启动;启动程序之后,指定其action以及uri,就可以访问指定的网页intent.setAction("android.intent.action.VIEW");Uri content_url =Uri.parse("http://www.163.com");
intent.setData(content_url); startActivity(intent);
3、android dvm的进程和Linux的进程应用程序是否为同一个概念
DVM指dalivk的虚拟机。每一个android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvok虚拟实例。而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念。
4、sim卡的ef文件有何作用。
sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本身可以有自己的操作系统,ef就是作存储并和手机通讯录的。
5、handler机制的原理
android提供了Handler和Looper来满足线程之间的通信。handler先进先出的原则。Looper类用来管理特定的线程内对象之间的消息交换
Looper:一个线程可以产生一个Looper对象,由他来管理此线程里的Message Queue(消息队列)
Handler:你可以构造Handler对象与Looper沟通,以便push新消息到Message Queue里,或者接收Looper从Message Queue取出所送来的消息
Message Queue(消息队列):用来存放线程放入的消息
线程:UI thread通常就是main thread,而android启动程序时会替他建立一个Message Queue
6、什么是ANR如何避免它
ANR:application Not Responding 五秒 在Android中,活动管理器和窗口管理器这两个服务负责监听事件的响应。android出现ANR对话框的情况;在输入事件的响应超过5秒,意向接收器(intentReceiver)超过10秒钟
仍未执行完毕
7、什么情况会导致Force Close?如何避免?是否捕获导致其的异常
一般像空指针啊,可以看起来logcat,然后对应到应用程序中来解决问题
8、IntentService有何优点?
Activity的进程,当处理intent的时候,会产生一个对应的Service
android的进程处理器会尽可能不kill掉
非常容易使用
9、如何将SQLite数据库与apk文件一起发布?
可以将文件复制到Eclipse android工程中的res aw目录中。所有在res aw目录中的文件不会被压缩,这样可以直接提取目录中的文件。
10、如何打开res aw 目录中的数据库文件?
在android中不能直接打开res aw 目录中的数据库,需要在程序的第一次启动时将该文件复制到手机内存或SD卡中的目录中,然后再打开该数据库文件。复制的基本方法是使用getResources().openRawResource方法获取res aw
目录资源的inputStream对象,然后将该inputStream对象中的数据写入其他目录中的相应文件中。在android sdk中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite数据库文件。
11、如何加载音乐信息,如何改善其效率。
android系统提供了MediaScanner,MediaProvider,MediaStore等接口,并且提供了一套数据库表格,通过ContentProvider的方式提供给用户。当手机或开机或有sd卡插拨等事件发生时,系统将会自动扫描SD卡和手机内存上的媒体文件,如
audio,vido,图片等,将相应的信息放到定义好的数据库表格中。
改善效率可以从界面需要查询必备的数据,不需要的不进行查询。
12、ListView如何提高其效率?
使用分页加载,不要一次性加载所有数据
13、Android程序与java程序的区别?
android程序是java编写的,但程序使用的android开发的api,就是android库。
14、Android系统中GC什么情况相爱会出现内存泄漏?
数据库的cursor没有关闭
构造器adapter时,没有使用缓存contentview;减少创建view的对象,充分使用contentView,可以使用一静态类来优化处理getview的过程;
Bitmap对象不实用时采用recycle()释放内存
activity中的对象的生命周期大于activity
15、android UI中的View如何刷新
一般只是希望View发生改变时对UI进行重绘。只需要在Activity中显示的调用View对象的invalidate()方法即可。系统会自动调用View的onDraw()方法
16、res目录有几项resource
6项 ,drawable-hdpi,drawable-ldpi,drawable-mdpi,layout,values。
17、NotifactionManager使用原理
通过getSystemService方法获得一个NotificationManager对象。
创建一个Notification对象。每一个Notification对应一个Notification对象。在这一步需要设置显示在屏幕上方状态栏的通知消息、通知消息前方的图像资源ID和发出通知的时间。一般为当前时间
由于Notification可以与应用程序脱离。也就是说,即使应用程序被关闭,Notification仍然会显示在状态栏中。当应用程序再次启动后,又可以重新控制这些Notification。如清除或替换它们。因此,需要创建一个PendingIntent对象。该对象
由android系统负责维护,因此,在应用程序关闭后,该对象仍然不会被释放。
使用Notification类的setLatestEventInfo方法设置Notification的详细信息。
使用NotificationManager类的notify方法显示Notififcation消息。在这一步需要指定标识Notification的唯一ID。这个ID必须相对同一个NotificationManager对象是唯一的,否则会被覆盖相同的ID的Notification。
18、Android开发过程中如何进行算法与界面的优化
调整程序的进程结构减少进程数量(善用ViewStub ViewSwitch等)减少进程周期循环次数,及时让进程休眠编写长寿代码,只在需要时运行,服务应尽快完成并结束
调整算法,取消不必要的环节,减少对CPU和内存的需求减少函数调用次数适当使用JNI3,精心设计界面避免复杂布局。控制嵌套和View数量,善于用Merge、inflate(),RelatvieLayout等,去除不必要的背景、动画执行时间,耗时任务之前检查电量、提示用户
19、谈下android系统的架构
Android系统采用了分层架构,从高层到底层分别是应用程序层、应用程序框架层、系统运行库层、linux核心层
20、View,SurfaceView,GLSurfaceView有什么区别
view是最基础的,必须在ui主线程更新画面,速度较慢。
SurfaceView是view的子类,类似使用双缓存机制。在新的线程中更新画面所刷新界面速度比view快
GLSurfaceView是SurfaceView的子类,opengl专用。
21、根据自己的理解描述下android数字签名
所有额应用程序必须有数字证书,android系统不会安装一个没有数字证书的应用程序
android程序包使用的数字证书可以是自签名,不需要一个权威的数字证书机构签名认证
如果正式发布一个android,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或ant工具生成的调试证书来发布
数字证书都是有有效期,android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。
>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();