python面...Android开发干货android开发杂识

android面试题-与IPC机制相关面试题

2017-04-08  本文已影响2710人  小怪兽打葫芦娃

Android程序员面试宝典

自定义控件

联网

工具

数据库

源码分析相关面试题

Activity相关面试题

Service相关面试题

与XMPP相关面试题

与性能优化相关面试题

与登录相关面试题

与开发相关面试题

与人事相关面试题

与人事相关面试题

现在三四月份,金三银四最好找工作时间,为方便各位找工作,特意收集100道android各个方面的面试题,并且会一一录制视频分享给大家方便大家找工作,面试题分类如下;

本文配套视频

1- Davik进程、linux进程、线程之间的区别?

Linux进程:

Davik进程:

线程:

三者之间的联系:

进程和线程的区别:

  1. 一个程序至少有一个进程,一个进程至少有一个线程.

  2. 线程的划分尺度小于进程,使得多线程程序的并发性高。

  3. 进程在执行过程中拥有独立的内存单元,而多个线程共享内存(同属一个进程),从而极大地提高了程序的运行效率。

  4. 每个独立的进程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

  5. 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

2-Android 中进程与进程之间如何通信?

aidl机制进程间通信

AIDL: (Android Interface definition language的缩写)它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口

AIDL进程间通讯的原理:
通过编写aidl文件来定义进程间通信接口。
编译后会自动生成响应的java文件
服务器将接口的具体实现写在Stub中,用iBinder对象传递给客户端,
客户端bindService的时候,用asInterface的形式将iBinder还原成接口,再调用其接口中的方法来实现通信。

使用Messenger实现进程间通信

Messenger是基于AIDL实现的。
AIDL使服务器可以并行处理,而Messenger封装了AIDL之后只能串行运行,所以Messenger一般用作消息传递。

Messenger实现原理:

服务端(被动方)提供一个Service来处理客户端(主动方)连接,维护一个Handler来创建Messenger,在onBind时返回Messenger的binder。
双方用Messenger来发送数据,用Handler来处理数据。Messenger处理数据依靠Handler,所以是串行的,也就是说,Handler接到多个message时,就要排队依次处理。

使用Messenger实现进程间通信方法如下:

内容提供者ContentProvider实现进程间通信

系统四大组件之一,底层也是Binder实现,主要用来为其他APP提供数据。

自定义的ContentProvider为外界进程访问的时候,
需要在注册时要提供authorities属性,应用需要访问的时候将属性包装成Uri.parse("content://authorities")。

微信公众号名称:Android干货程序员

上一篇下一篇

猜你喜欢

热点阅读