62.什么情况会导致Force close,如何避免,能否捕获导致其的异常。
抛出运行时异常就会导致Force close,比如空指针,数组越界,类型转换异常等等
避免:编写程序时,要思维缜密,在可能出现异常的地方都做相应的处理,增强程序的健壮性。
捕获:可以通过logcat查看抛出异常的代码出现的位置,然后到程序对应代码中进行修改。
63.android本身的api并未声明会抛出异常,则在其运行时有无可能抛出Runtime异常,你遇到过吗?若有的话会导致什么问题?如何解决?
会,如NullPointerException。 textView没有初始化时,却调用了其方法。
打开控制台,查看Logcat找出异常并修改。
64.IntentService有何优点?
IntentService使用队列的方式将请求的intent加入队列,然后开启一个工作线程来处理队列中的intent。对于异步的startService请求,intentservice会处理完成一个之后再处理第二个,每一个请求都会在一个单独的工作线程中处理,不会阻塞应用程序的主线程。
优点:
Activity的进程,当处理Intent的时候,会产生一个对应的service。
Android的进程处理器现在会尽可能的不kill你
非常容易使用
65.如何打开res/raw目录下的数据库文件
在Android中不能直接打开res/raw下的数据库文件,而需要在程序第一次启动时,将该文件复制到手机内存或SD卡的
某个目录下,然后再打开数据库文件。复制的基本方法是使用getResources().openRawResource()获得res/raw目录
中资源的InputStream对象,然后将该InputStream对象中的数据写到其它的目录中的相应文件中。
在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase()来打开任意目录中的SQLite数据库文件。
66.Android中引入广播机制的用意
(1)方便组件之间信息和数据的交互
(2)程序间互通消息(例如在自己的应用程序内监听系统来电)
(3)效率上
(4)设计模式上(反转控制的一种应用,类似监听者模式)
67.AIDL的全称是什么?如何工作?能处理哪些类型的数据?
AIDL全称是Android Interface Definition Language(Android接口定义语言)
68.请解释下Android程序运行时权限与文件系统权限的区别
Android程序运行 是虚拟机Davlik(android授权)
文件系统 是linux内核授权
69.系统上安装了多种浏览器,能否指定某浏览器访问指定页面?
可以
只要指定intent.setClassName(packageName,activity);即可启动指定的浏览器
70.你如何评价Android系统,优缺点。
优点:开源特性,得到众多厂商支持;软件发展很快;界面UI、系统优化不错。
缺点:版本过多,升级过快;用户体验不一致。
71.DDMS和TraceView的区别
DDMS是一个程序执行查看器,在里面可以看见线程和堆栈等信息,TraceView是程序性能分析器。
72.谈谈Android的IPC机制
IPC是内部进程通信的简称,是共享“命名管道”的资源。Android中的IPC机制是为了让Activity和service之间可以随时地进行交互,故在Android中,该机制只适合于Activity和service之间的通信。通过定义AIDL接口文件来定义IPC接口,服务器端实现IPC接口,客户端调用IPC接口。
73.NDK是什么
NDK是一系列工具的集合。
NDK提供了一系列的工具,帮助开发者迅速开发c/c++的动态库,并能自动将so和java应用打成apk包。
NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU,平台,ABI等差异,开发人员只需简单的修改mk文件就可以创建出so。
NDK提供了一份稳定的,功能有限的API头文件声明。
74.Activity的几种启动模式
设置Activity的启动模式,只需要在AndroidManifest.xml里对应的<activity>标签设置android:launchMode属性
Activity启动方式有四种,分别是:
standard
singleTop
singleTask
singleInstance
standard
默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加。
可以有多个实例,但是不允许多个相同Activity叠加。即,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。
只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。
如果是在别的应用程序中启动它,则会新建一个task,并在该task中启动这个Activity,singleTask允许别的Activity与其在一个task中共存,也就是说,如果我在这个singleTask的实例中再打开新的Activity,这个新的Activity还是会在singleTask的实例的task中。
只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。