android面试技巧分享
1. Intent的几种有关Activity启动的方式有哪些,你了解每个含义吗?
FLAG_ACTIVITY_SINGLE_TOP如果目标Activity已经运行在栈顶,将不会再启动
= singleTop
FLAG_ACTIVITY_BROUGHT_TO_FRONT 、=singleTask
FLAG_ACTIVITY_MULTIPLE_TASK=singleInstance
FLAG_ACTIVITY_CLEAR_TOP、如果被启动的activity已经运行在当前 task,将不会再创建新的活动实例,位于其上的其它activity将会被关闭。
2. Activity和Task的启动模式有哪些? 每种含义是什么?
3. 通过Intent传递一些二进制数据的方法有哪些?
1). 使用Serializable接口实现序列化,这是Java常用的方法。
2). 实现Parcelable接口,这里Android的部分类比如Bitmap类就已经实现了,同
时Parcelable在Android AIDL中交换数据也很常见的。
4. 能说下Android应用的入口点吗?
真正的Android入口点是application的main,你可以看下androidmanifest.xml的包含关系就清楚了。
5. Android都有哪些XML解析器,都熟练掌握吗?
这里SAX和DOM、XmlPull相信做过Web开发的都已经滚瓜烂熟了。
6. SQLite支持事务吗? 添加删除如何提高性能?
SQLite作为轻量级的数据库,比MySQL还小,但支持SQL语句查询,提高性能可以考虑通过优化的SQL查询语句方式处理。SQLITE默认就是打开事务的。
7. Android Service和Binder、AIDL你都熟练吗?
Binder是系统进程间通信(IPC)方式之一。Binder使用Client-Server通信方式:一个进程作为Server提供诸如视频/音频解码,视频捕获,地址本查询,网络连接等服务;多个进程作为Client向Server发起服务请求,获得所需要的服务。要想实现Client-Server通信据必须实现以下两点:一是server 必须有确定的访问接入点或者说地址来接受Client的请求,并且Client可以通过某种途径获知Server的地址;二是制定Command- Reply协议来传输数据。例如在网络通信中Server的访问接入点就是Server主机的IP地址+端口号,传输协议为TCP协议。对Binder而言,Binder可以看成Server提供的实现某个特定服务的访问接入点, Client通过这个‘地址’向Server发送请求来使用该服务;对Client而言,Binder可以看成是通向Server的管道入口,要想和某个 Server通信首先必须建立这个管道并获得管道入口。Binder框架定义了四个角色:Server,Client,ServiceManager(以后简称SMgr)以及驱动。其中 Server,Client,SMgr运行于用户空间,驱动运行于内核空间。由于Android的Java层级只是一个外壳框架而已,大部分的系统组件(Android本身)都是在Nataive层(又称C/C++层)执行。这是Android的整体架构,所以我们的应用程序也必须考虑分为两层的必要性,才能完全的融入Android的整体架构里。我们看到的Android应用架构(Application Framework)其实只是Android整体架构里的外壳结构而已。Android应用框架就如同椅子的椅面,那么椅子的椅腿在哪里呢?Binder系统是在Native层的C/C++组件。Java应用程序(如Activity体系等)是透过JNI界面去呼叫Binder系统(或称为组件)。
AIDL:在Android中, 每个应用程序都可以有自己的进程. 在写UI应用的时候, 经常要用到Service. 在不同的进程中, 怎样传递对象呢? 显然, Java中不允许跨进程内存共享. 因此传递对象, 只能把对象拆分成操作系统能理解的简单形式, 以达到跨界对象访问的目的`. 在J2EE中,采用RMI的方式, 可以通过序列化传递对象. 在Android中, 则采用AIDL的方式. 理论上AIDL可以传递Bundle,实际上做起来却比较麻烦.
AIDL(AndRoid接口描述语言)是一种借口描述语言; 编译器可以通过aidl文件生成一段代码,通过预先定义的接口达到两个进程内部通信进程的目的. 如果需要在一个Activity中, 访问另一个Service中的某个对象, 需要先将对象转化成AIDL可识别的参数(可能是多个参数), 然后使用AIDL来传递这些参数, 在消息的接收端, 使用这些参数组装成自己需要的对象. AIDL的IPC的机制和COM或CORBA类似, 是基于接口的,但它是轻量级的。它使用代理类在客户端和实现层间传递值. 如果要使用AIDL, 需要完成2件事情: 1. 引入AIDL的相关类.; 2. 调用aidl产生的class.
8. 你用过哪款Android手机,有哪些优点和不足,相对于iPhone或Symbian又有哪些优缺点?
版权声明:此文自动收集于网络,若有来源错误或者侵犯您的合法权益,您可通过邮箱与我们取得联系,我们将及时进行处理。
本文地址:https://www.gunzhua.com/jiuye/mianshi/150252.html