`
meohao
  • 浏览: 97725 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

写在20120524:aidl

 
阅读更多
Android IDL =aidl 是一种idl(接口定义)语言,轻量级
它可以生成一段代码,可以使在一个Android设备上运行的两个进程使用内部通信进程进行交互。
1.建立一个aidl文件
package com.google.android.sample;
interface MDSInterface{
   void playFile(int position);
};
2.aidl会自动生成一个接口文件,文件名和aidl文件名一致,生成的接口包括一个内部抽象类,名称为Stub.
MSDTnterface.Stub mBindler = new MSDTnterface.Stub(){
   void playFile(int position){
     //To_do sth
   }
}
实现接口的几个原则:
1) 抛出的异常不要返回给调用者;
2) IPC调用是同步的,如果你知道一个IPC服务需要超过几毫秒的时间才能完成的话,你应该避免在Activity/View线程中调用
3) 只有方法才获得支持,换句话说不支持变量
4) 不能在aidl接口声明静态属性。
3.发布服务,继承Service,并实现getBinder()/onBind()返回一个实现的类的定制
public  class MDService extends Service{
   public IBinder onBind(Intent intent){
      return mBinder;
   }
   private final MDSInterface.Stub mBinder = new MSDTnterface.Stub(){
   }
}
4.被调用者调用
public class MusicDroid extends Activity{
    public MDSInterface mpInterface;
    publiv void onCreate(Bundle icicle){
    bindService(new Intent(MusicDroid.this, MDService.class), mConnection, Context.BIND_AUTO_CREATE);
    }

    private ServiceConnection mConnection =new ServiceConnection(){
       public void onServiceConnected(ComponentName classname, IBinder service){
         mpInterface=MDSInterface.Stub.asInterface((IBinder).Service);
       }
       public void onServiceDisconnected(ComponentName classname){
         mpInterface = null;
       }
    }
}
分享到:
评论

相关推荐

    Android工作实践总结:Aidl 远程调用(aidl实例总结)

    Android工作实践总结:Aidl 远程调用(aidl实例总结) AIDL的IPC的机制和COM或CORBA类似, ...它使用代理类在客户端和实现层间传递值. 如果要使用AIDL, 需要完成2件事情: 1. 引入AIDL的相关类.; 2. 调用aidl产生的class.

    aidl.rar_AIDL_AIDL.rar_android AIDL service_android service_andr

    AIDL(Android Interface Definition Language)是Android系统提供的一种接口定义语言,用于在不同进程间进行通信,特别是当服务(Service)需要与客户端(如Activity)跨进程交互时。AIDL帮助开发者定义接口,使得...

    AIDLService:AIDL 示例

    在Android开发中,AIDL(Android Interface Definition Language)是一种用于实现进程间通信(IPC,Inter-Process Communication)的技术。它允许一个应用组件在不同的进程中调用另一个应用组件的方法,即使这两个...

    AIDL_AidlService_android_

    AIDL允许我们在不同的Android应用程序组件之间定义接口,使得它们可以相互通信,即使这些组件在不同的进程中运行。 **AIDL的基本概念** 1. **接口定义**: AIDL文件本质上是定义了一个接口,其中包含了方法声明。这...

    HBriqAIDLExample:Android AIDL示例

    源组件: app:AIDL服务部分hbriqaidlclient:AIDL客户端部分hbriqaidl:AIDL接口 建造: 将ANDROID_HOME导出到sdk路径对于调试apk: $ ./gradlew assembleDebug 跑步: 安装生成apk文件到目标例如亚行安装./...

    android aidl

    android学习之aidl的资料1 方便大家学习aidl.并测试上传资源。谢谢大家

    android_AIDL:AIDL的理解和使用

    在Android系统中,AIDL(Android Interface Definition Language)是一种接口定义语言,用于处理进程间通信(IPC, Inter-Process Communication)。AIDL使得Android应用能够跨进程调用其他应用的服务,实现不同应用...

    AIDL的使用实例

    **AIDL(Android Interface Definition Language)**是Android系统提供的一种接口定义语言,用于在不同进程间进行通信,尤其是当服务需要在多个应用之间共享时。AIDL允许开发者定义服务端暴露的方法,客户端通过调用...

    AidlDemo_client:Aidl客户端

    在Android开发中,AIDL(Android Interface Definition Language)是一种用于进程间通信(IPC, Inter-Process Communication)的机制,使得不同应用之间的服务可以互相调用方法。本项目"AidlDemo_client"是一个AIDL...

    AidlDemo(简单aidl的例子).zip

    AIDL是Android系统提供的一种机制,使得运行在不同进程中的组件能够相互通信。 **描述解读:** "Android 应用项目开发源码,参考和学习使用" 描述中提到这是一份用于学习和参考的Android应用源代码,目的是教授如何...

    跨进程通信AIDL

    在Android中,AIDL(Android Interface Definition Language)是一种强大的工具,用于定义和实现跨进程通信的接口。通过AIDL,开发者可以创建服务(Service)来处理其他应用程序组件的请求,即使这些组件运行在不同...

    AIDL服务接口

    在Android系统中,应用程序通常运行在各自的进程中,为了实现不同进程间的通信(IPC,Inter-Process Communication),Android提供了一种强大的工具——AIDL(Android Interface Definition Language)。AIDL使得...

    Android 使用AIDL进行两个APP之间通讯以及相互消息回调(一)

    作用:可以在一个进程中获取另一个进程的数据和调用其暴露出来的方法,从而满足进程间通信的需求。 1.AIDL支持的基本数据类型 八种基本数据类型:byte、char、short、int、long、float、double、boolean String,...

    ServerDemo:aidl服务端

    在Android开发中,AIDL(Android Interface Definition Language)是一种用于进程间通信(IPC,Inter-Process Communication)的机制,使得不同应用之间的服务可以相互调用方法。本项目"ServerDemo:aidl服务端"是一...

    android AIDL解析

    AIDL允许你在不同的Android应用程序组件之间定义接口,使得它们能够相互通信,即使这些组件在不同的进程中运行。在Android开发中,当你需要一个服务与另一个应用的组件交互时,AIDL就显得尤为重要。 **AIDL的基本...

    AIDL简单实例下载

    AIDL是Android系统提供的一种接口定义语言,用于在不同进程间实现通信,特别是当服务需要在后台处理并与其他应用交互时。通过AIDL,我们可以定义接口,让不同进程的组件之间能够透明地交换数据。这个实例包含客户端...

    AidlClient:aidl 基本用法

    AIDL是Android系统用于创建跨进程接口的语言,它允许一个应用服务在不同的进程中被其他应用调用。AIDL定义了一种接口,使得客户端和服务端可以进行数据交换,就像在同一进程内调用对象方法一样。通过AIDL,我们可以...

    AIDL通信例子

    - **服务声明**:在`AidlServer`应用中,我们需要在`AndroidManifest.xml`文件中声明一个服务,并指定对应的AIDL接口。 - **实现接口**:创建的AIDL接口需要在服务类中实现,服务端将实现具体的功能逻辑。 - **...

    Android AIDL 跨进程通信

    1. **创建AIDL文件**:在项目的src/main/aidl目录下创建.AIDL文件,编写接口定义。 2. **编译**:Android Studio会自动编译AIDL文件,生成对应的Java Stub类。 3. **服务端实现**:在服务端实现接口,并启动服务。...

    跨应用调用之AIDL

    2. **线程管理**: 跨进程通信发生在不同的线程中,因此在服务端处理AIDL调用时,需要注意线程同步问题,通常建议在处理方法中使用`Handler`或`AsyncTask`。 3. **错误处理**: 考虑到进程间的通信可能会出现异常,如...

Global site tag (gtag.js) - Google Analytics