Android -- 跨应用绑定service(AIDL)

之前一章记录了跨应用启动service,之前学习过startService于bindService的区别及用法。

使用bindService方法,activity需要service返回一个Binder对象,那么如果是两个应用怎么实现呢,这里就涉及到了一个AIDL的概念。

AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码。如果在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,就可以使用AIDL生成可序列化的参数。

下面我们来看如何使用,

首先我们需要在service1项目中创建一个aidl接口。

我用的是eclipse,创建方法,包名右键–NEW–File–.aidl后缀的名称**,如图

aidl文件中的自己输入接口代码。

创建完文件后,clear工程,会在gen目录下生产相应的java文件。

第二步

进入service1项目中的service修改onBinder方法,代码如下

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return new IMyService.Stub() {

            @Override
            public void basicType() throws RemoteException {
                // TODO Auto-generated method stub

            }
        };
    }

至此,一个简单的aidl创建成功。

我们再回到service2项目中,增加按钮事件监听,

        case R.id.button3:
            bindService(serviceIntent, this, Context.BIND_AUTO_CREATE);
            break;
        case R.id.button4:
            unbindService(this);
            break;

成功完成service2项目绑定service1项目中的service

时间: 2024-08-02 12:09:51

Android -- 跨应用绑定service(AIDL)的相关文章

Android -- 跨应用绑定service并通信

之前记录过跨应用绑定service:http://blog.csdn.net/gaopeng0071/article/details/46049929,那么绑定后如何进行通信呢,下面我们就来学习下. 第一步, 需要修改service1项目中aidl,增加一个方法. package com.example.service1.aidl; interface IMyService { void basicType(); void setName(String name); } setName用于存储n

Android学习笔记二十六.跨进程调用Service(AIDL Service)

跨进程调用Service(AIDL Service) 一.AIDL Service 1.什么是AIDL Service? AIDL,即Android Interface Definition Language.是Android用于定义远程接口,AIDL接口定义语言的语法比较简单,这种接口定义语言并不是真正的编程语言,它只是定义两个进程之间的通信接口.AIDL的语法与Java接口很相似,但存在如下几点差异: (1)AIDL定义接口的源代码必须以.aidl结尾; (2)AIDL接口中用到数据类型,除

跨应用绑定service

绑定service需要在上一讲中,新创建一个AIDL. // AppServiceRemoteBinder.aidl package com.example.yabushan.aidsservice; // Declare any non-default types here with import statements interface AppServiceRemoteBinder { /** * Demonstrates some basic types that you can use

跨进程绑定Service

之前讲过Service有远程服务,也就是不同程序之间也可以通过Service联系起来.跨进程的绑定Service可以通过aidl接口实现. 下面运用一个例子程序 提供Service里的方法和数据的程序叫做服务端,获取和运用Service里的方法和数据的程序叫客户端. 先创建两个安卓程序,一个作为服务端,一个作为客户端. 先对服务端进行操作,在服务端创建一个class类,然后在我的电脑的eclipse的项目存储目录下,找到该class并把后缀名改为 .aidl 然后回到开发程序中刷新一下,就会发现

跨进程调用Service(AIDL Service)

1.什么是aidl:aidl是 Android Interface definition language的缩写,一看就明白,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口 icp:interprocess communication :内部进程通信 2.既然aidl可以定义并实现进程通信,那么我们怎么使用它呢?文档/android-sdk/docs/guide/developing/tools/aidl.html中对步骤作了详细描述: --1.Create

Android -- 跨应用启动Service

本章博客,记录的是跨应用启动Service. 我们需要创建一个应用service1,其中包含一个MyService,部分代码如下: @Override public void onCreate() { // TODO Auto-generated method stub System.out.println("onCreate"); super.onCreate(); } @Override public void onDestroy() { System.out.println(&q

Android跨进程访问(AIDL服务)

我将AndroidAIDL的学习知识总结一下和大家共享 在Android开发中,AIDL主要是用来跨进程访问. Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信,一般是和Service服务组件一起使用来实现. 1.创建调用AIDL服务 建立AIDL服务的步骤: 第一步:在Eclipse的Android工程的Java源文件目录中建立一个扩展名为aidl的文件,改文件的语法类似于Java代码,但稍有不同. 第二步:如果aidl文件的内容是正确的,ADT会在

入门篇:10.Android中AIDL(安卓接口定义语言)跨应用操作Service

Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信. 为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现.与很多其他的基于RPC的解决方案一样,Android使用一种接口定义语言(Interface Definition Language,IDL)来公开服务的接口.我们知道4个Android应用程序组件中的3个(Activity.BroadcastRec

关于Android中的四大组件(AIDL Service的使用)

跨进程调用Service(AIDL Service) Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信. 在前一篇文章(关于Android中的四大组件(Service的开启与关闭))中介绍了开发人员如何定制自己的服务,但这些 服务并不能被其它的应用程序访问,为了使其它的应用程序也可以访问本应用程序提供的服务,Android系统采用了 远程过程调用(Remote Procedure Call,RPC)方式来实现.与很多其它的基于RPC的解决方案一样,An