三十一、AIDL的全称是什么?如何工作?能处理哪些类型的数据?

英文全称:Android Interface Define Language(Android接口定义语言)。

当A进程要去调用B进程中的service并实现通信时,我们通常都是通过AIDL来操作的。

基本操作步骤:

在A工程中某个目录下(如com.lovo.aidlservice)下创建一个aidl文件(如RemoteService.aidl),在里面自定义一个接口,含有get方法,ADT插件会在gen目录下自动生成一个RemoteService.java文件,该类中含有一个名为RemoteService.stub的内部类,该内部类中含有aidl文件接口的get方法。

自定义一个MyService类继承Service,在MyService类中自定义一个内部类去继承RemoteService.stub这个内部类,实现get方法。在onBind方法中返回这个内部类的对象,系统会自动将这个对象封装成IBinder对象,传递给他的调用者。

然后需要在配置文件中配置该service(需要指明action参数,以便下面B工程访问)。

将A工程中的RemoteService.java文件拷贝到B工程对应目录,在bindService方法中绑定aidl服务,就是将RemoteService的ID作为intent的action参数。

注意:若我们访问的远程服务属于系统的,比如黑名单挂断电话,这时只需将其aidl拷贝到工程的对应目录下即可。

AIDL既能处理简单类型的数据也能处理复杂类型的数据。

具体示例请参考:http://blog.csdn.net/u010142437/article/details/9273115

三十二、系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由。

访问指定页面可以通过Uri 来确定。

对于指定浏览器:

1、默认浏览器:

在Android程序中我们可以通过发送隐式Intent来启动系统默认的浏览器。

Intent intent =new Intent();

intent.setAction("android.intent.action.VIEW");

Uri content_url =Uri.parse("http://www.163.com");

intent.setData(content_url);

startActivity(intent);

2、指定浏览器:

如果手机本身安装了多个浏览器而又没有设置默认浏览器的话,系统将让用户选择使用哪个浏览器来打开连接。

另外,也可以发送显示Intent来启动浏览器。如下面就是启动Android原生浏览器的例子:

Intent intent =new Intent();

intent.setAction("android.intent.action.VIEW");

Uri content_url =Uri.parse("http://www.163.com");

intent.setData(content_url);

intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");

startActivity(intent);

注:要启动其他浏览器只需修改intent.setClassName()里面的参数就OK了。

常见的浏览器:
uc浏览器":"com.uc.browser", "com.uc.browser.ActivityUpdate“

opera浏览器:"com.opera.mini.android", "com.opera.mini.android.Browser"

qq浏览器:"com.tencent.mtt", "com.tencent.mtt.MainActivity"

三十三、如何退出Activity?如何安全退出已调用多个Activity的Application?

退出单个activity使用finish即可。

退出多个activity的方式有很多种,我经常使用的有以下几种:

1、自定义一个Application子类,里面提供一个集合专门存放所有的activity,另外提供两个方法,一个用来往集合增加activity,另一个用来销毁集合中所有的activity即退出应用程序。这样其他activity启动后就可以添加到该集合中,需要退出应用程序时,调用该Application类的退出程序的方法行了。这种方式易于理解,操作也方便。

2、发送特定广播:当需要结束应用时,发送一个特定的广播,每个activity收到广播后,关闭即可。

3、创建一个专门用来退出应用程序的activity,该activity不包含任何有关业务的操作,当需要结束应用程序时,跳转到该activity,并同时设置intent的flags为Intent.FLAG_ACTIVITY_CLEAR_TOP,这样该activity所在栈上面的所有activity都将销毁,然后销毁那个空白的activity即可。

示例可见:http://blog.csdn.net/u010142437/article/details/9398041

三十四、IntentService 的好处

参考示例:http://blog.csdn.net/u010142437/article/details/12063907

http://blog.csdn.net/u010142437/article/details/12063451

三十五、根据自己的理解描述下Android数字签名

在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的protectionLevel为signature,那么就只有那些跟该permission所在的程序拥有同一个数字证书的应用程序才能取得该权限。Android使用Java的数字证书相关的机制来给apk加盖数字证书,要理解android的数字证书,需要先了解以下数字证书的概念和java的数字证书机制。Android系统要求每一个安装进系统的应用程序都是经过数字证书签名的,数字证书的私钥则保存在程序开发者的手中。Android将数字证书用来标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定最终用户可以安装哪些应用程序。这个数字证书并不需要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证的。
同一个开发者的多个程序尽可能使用同一个数字证书,这可以带来以下好处。
(1)有利于程序升级,当新版程序和旧版程序的数字证书相同时,Android系统才会认为这两个程序是同一个程序的不同版本。如果新版程序和旧版程序的数字证书不相同,则Android系统认为他们是不同的程序,并产生冲突,会要求新程序更改包名。
(2)有利于程序的模块化设计和开发。Android系统允许拥有同一个数字签名的程序运行在一个进程中,Android程序会将他们视为同一个程序。所以开发者可以将自己的程序分模块开发,而用户只需要在需要的时候下载适当的模块。
(3)可以通过权限(permission)的方式在多个程序间共享数据和代码。Android提供了基于数字证书的权限赋予机制,应用程序可以和其他的程序共享概功能或者数据给那那些与自己拥有相同数字证书的程序。如果某个权限(permission)的protectionLevel是signature,则这个权限就只能授予那些跟该权限所在的包拥有同一个数字证书的程序。
在签名时,需要考虑数字证书的有效期:
(1)数字证书的有效期要包含程序的预计生命周期,一旦数字证书失效,持有改数字证书的程序将不能正常升级。
(2)如果多个程序使用同一个数字证书,则该数字证书的有效期要包含所有程序的预计生命周期。
(3)Android Market强制要求所有应用程序数字证书的有效期要持续到2033年10月22日以后。
Android数字证书包含以下几个要点:
 (1)所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序
 (2)Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证
 (3)如果要正式发布一个Android ,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布。
 (4)数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。

android面试题之六的更多相关文章

  1. 【Android面试】Android面试题集锦 (陆续更新)(最新2012-6-18) eoe上看到的

    ===============eoeAndroid社区推荐:======================= 1.Android开发新浪面试题[开发者必看哦]下载地址 http://www.eoeand ...

  2. 安卓Android面试题大全

    56个问题都是经常用到的,可以深入研究下,也是必须掌握的开发必备知识. 安卓Android面试题汇总 搜集了一些Android面试题目,供将要面试或者正在面试的朋友参考. 1, 谈谈你对Activit ...

  3. Android 面试题总结

    Android 面试题总结(不断更新) 1.INETNT几种有关Activit的启动方式FLAG_ACTIVITY_BROUGHT_TO_FRONT 将ACTIVITY带到最前面FLAG_ACTIVI ...

  4. Android面试题整理【转载】

      面试宝典(5)  http://www.apkbus.com/android-115989-1-1.html 面试的几个回答技巧 http://blog.sina.com.cn/s/blog_ad ...

  5. 19、android面试题整理(自己给自己充充电吧)

    (转载,出处丢失,请原作者原谅,如有意见,私信我我会尽快删除本文) JAVA 1.GC是什么? 为什么要有GC?GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问 ...

  6. Android面试题基础(转)

    71道经典Android面试题和答案 1.下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存 B.内存回收程序负责释放无用内存 C.内存回收程序允许程序员直接释 ...

  7. Android面试题(文章内容来自他人博客)

    腾讯面试题 1.int a = 1; int result = a+++3<<2; 2.int a = 2; int result = (a++ > 2)?(++a):(a+=3); ...

  8. android面试题集1

    Android 面试题(有详细答案) 附带答案,共100分 一.选择题(30题,每题1.5分,共45分) 1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分类,按功 ...

  9. Android面试题收集(有具体答案)

    Android面试题目及其答案 1.Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 DVM指dalivk的虚拟机.每个Android应用程序都在它自己的进程中执行,都 ...

随机推荐

  1. Freemarker生成静态代码实例

    1.static.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http ...

  2. Jsp中response对象的所有属性

    所属接口:javax.servlet.http.HttpServletResponse,其父接口是ServletResponse,而且ServletResponse也现在只有唯一一个HttpServl ...

  3. 最全SpringMVC具体演示样例实战教程

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先.导入SpringMVC须要的jar包. 2.加入Web.xml配置文件里关于SpringMVC的配置 <!--conf ...

  4. Appium依据xpath获取控件实例随笔

    如文章<Appium基于安卓的各种FindElement的控件定位方法实践>所述,Appium拥有众多获取控件的方法.当中一种就是依据控件所在页面的XPATH来定位控件. 本文就是尝试通过 ...

  5. 戴明PDCA方法

    戴明PDCA方法:即Plan(计划).Do(执行).Check(检查)和Action(处理)的缩写. P(plan)计划: 包括方针和目标的确定以及活动计划的制定; D(do)执行: 执行就是具体运作 ...

  6. 关于material和sharedMaterial的问题

    在unity3d中,Renderer组件有两个属性:material和sharedMaterial,它们都可以用来获取Renderer的材质属性.但是它们之间却又很大的区别,下面通过示例来讲解一下. ...

  7. C# typeof Gettype is as &拆箱 装箱

    有时候,我们不想用值类型的值,就是想用一个引用..Net提供了一个名为装箱(boxing)的机制,它允许根据值类型来创建一个对象,然后使用对这个新对象的一个引用. 首先,回顾两个重要的事实,1.对于引 ...

  8. 基本 XAML 语法指南

    我们介绍了 XAML 语法规则,以及用于描述 XAML 语法中存在的限制或选项的术语.当出现以下情况时你会发现本主题很有用:不熟悉 XAML 语言的使用,希望加强对术语或某些语法部分的理解,或者对 X ...

  9. 在MVC中如何愉快使用Ajax

    前言: 这个故事要从我老大与客户谈需求开始说起.前几天,遇见一个逗比客户,不知道是听了哪个逗比程序员的临终遗言...让我们给他做一个手机端的Web应用出来,还说要使用MVC来做(不是App).马币,客 ...

  10. Web ADF 编程步骤.

    从Web Controls 开始(工具来中的 ArcGIS Web Controls). 访问Resource Manager. 找到待访问的 Resource. 决定 Resource支持哪个 Fu ...