第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【九月打卡】第4天 Android 中的 AIDL 的使用

標(biāo)簽:
Android

课程名称BAT大牛亲授技能+技巧 Android面试快速充电升级
课程章节:Android基础相关面试问题
主讲老师DocMike

课程内容

1.AIDL 介绍

在 Android 中每一个进程都有自己的 VM 实例,都有一块属于自己的独立内存。Binder 就是 Android 中一种跨进程通信方式,Binder 通信采用 c/s 结构,Binder 组件通常包括 Client、Server、ServiceManager 以及 Binder 驱动。具体的通信过程是:

  1. 首先 Server 向 ServiceManager 注册一个服务;
  2. Client 从 ServiceManager 获取服务,这样 Client 就可以与 Server 进行通信。
  3. 真正的数据流是通过底层的 Binder 驱动来实现,这是被系统封装好的。

AIDL 就是应用在 Android 中进程间通信的一种语言,通过 AIDL 可以在一个进程中获取另一个进程的数据和对外提供的方法。AIDL 的本质是帮我们简化了进程间通信的开发工作,它的核心还是 Binder 机制。

2.如何创建 AIDL

通过 AIDL 实现进程间通信,通常包括以下几个步骤:

  1. 创建 AIDL 实体对象(实现 Parcelable 接口),为了跨进程通信时传递数据使用,在 main 目录下创建独立的 aidl 文件夹,aidl 文件的包名要和对应 java 类的包名完全一致。
  2. 在服务端创建 aidl 实例,将服务端的接口包装进去,创建 binder 对象,通过 onBind()方法提供给客户端;
  3. 客户端实现 ServiceConnection,在方法中获取到 aidl 的实例,通过 bindService() 获取到 aidl 实例,从而调用服务端的方法。

3.分析 AIDL 生成的 java 文件

ADIL 文件帮我们生成了 binder 对象,同时生成了跨平台转换类 stub ,以及在不同进程时客户端拿到的代码 proxy 。服务端创建 aidl 的 stub 的实体,stub 既是 binder 也是 IInterface,实现接口中的方法,在onBind中返回给客户端。

整个文件的核心就是静态内部抽象类 stub。stub中包含了一下几项内容:

  1. asInterface() 用来根据不同进程返回 stub 类自己还是 proxy 代理类,如果是在同一进程,就返回 stub 类,如果不在同一进程,就会创建 proxy 代理。
  2. 代理类 proxy 用来向远程进程包装数据、发送数据、解析返回结果。
  3. onTransact() 方法作为服务端进程调用,用来处理客户端进程传递过来的数据。
  4. IInterface 接口的功能方法,stub 继承了接口,这些方法用来处理客户端进程的具体业务。

课程收获

这一节详细介绍了 AIDL 的创建和使用,从应用层面看使用 AIDL 解决了进程间的通信问题,其核心是 Binder 机制,从 Framework 层来看 Binder 又是链接各种 Manager 和 ManagerService 的桥梁。
图片描述
图片描述
图片描述

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
移動(dòng)開發(fā)工程師
手記
粉絲
12
獲贊與收藏
17

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消