Advertisement

Service 1Android Remote Service (AIDL)

阅读量:

背景

Android系统中的Service作为四大核心组件之一,其功能及重要意义无需赘述.在应用过程中,该模块与Service之间的通讯关系是应用开发中的一个重要环节.主要可分为两种类型:

  1. Activity与Service共用一个过程,这种情况通常是常见的。
  2. 如果同一应用但在Android manifest中标明了android:process属性的话,Activity和Service会分别运行于不同的过程。
  3. 如果两者不在同一应用环境中,则自然运行于不同的过程

本文主要聚焦于第二种情形下的通信机制。根据 developer.android 的文档说明,在该场景下信息传输可通过以下三种方式实现:

  1. AIDL 适用于跨进程通信且需多线程支持,并具有较高的开销。
  2. Binder 仅需多线程支持而不涉及跨进程通信。
  3. Messenger 必须进行跨进程通信但可避免处理相关复杂的多线程问题。

三种不同的通讯方案在实现难度及运行效率上各有差异,在面对简单问题时不宜追求复杂解决方案的前提下(杀鸡不用牛刀原则),建议根据当前应用的具体需求来决定采用何种通讯方案。接下来将参考Google的相关文档来探讨AIDL的应用及其注意事项。

AIDL的线程模型:

  1. 同一进程内部的函数调用必将在同一线程内运行。这表明当在UI组件(UI threa

全部评论 (0)

还没有任何评论哟~