四大跨进程通信组件之AIDL(跨进程service通信)

本文介绍了Android Interface Definition Language (AIDL),用于实现跨进程通信的机制。通过AIDL,应用能够公开服务接口供其他应用访问。示例展示了如何在本进程和跨进程中使用AIDL,包括创建AIDL文件、实现接口方法、启动服务以及通过显式Intent在Android 5.0及以上版本进行服务通信。文章最后提醒,从Android 5.0开始,跨进程通信不应再使用隐式Intent启动服务。
摘要由CSDN通过智能技术生成

AIDL:Android Interface Definition Language,即Android接口定义语言
为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程

  1. 百度百科

    过程调用(Remote Procedure Call,RPC)方式来实现。与很多其他的基于RPC的解决方案 一样,Android使用一种接口定义语言(Interface Definition Language,IDL)来公开服务的接口。我们知道4个Android应用程序组件中的3个(Activity、BroadcastReceiver和ContentProvider)都可以进行跨进程访问,另外一个Android应用程序组件Service同样可以。因此,可以将这种可以跨进程访问的服务称为AIDL(Android Interface Definition Language)服务。

  2. AIDL作为四大跨进程通讯手段之一,我们就算不能完全掌握它,也需要大概了解下它是如何运行的,下面我就写个小例子去展示它。

我会使用本进程AIDL的使用和跨进程AIDL的使用来讲解它

  1. 列表内容
    新建一个项目,在其中建立一个AIDL文件
interface AIDLTest {
    /**
     * Demonstrates some basic types that you can use as parameters
     * and return values in AIDL.
     */

     int add(int x,int y);
     int multiplication(int x , int y );

}

上面是定义的AIDL接口,里面有两个方法,一个加法一个乘法,我会在本进程实现加法,在外部进程实现乘法,然后log出来
5.创建一个server

  private static final String TAG = "server";

    public void onCreate()
    {
        Log.e(TAG, "onCreate");
    }

    public IBinder onBind(Intent t)
    {
        Log.e(TAG, "onBind");
        return mBinder;
    }

    public void onDestroy()
    {
        Log.e(TAG, "onDestroy");
        super.onDestroy();
    }

    public boolean onUnbind(Intent intent)
    {
        Log.e(TAG, "onUnbind");
        return super.onUnbind(intent);
    }

    public void onRebind(Intent intent)
    {
        Log.e(TAG, "onRebind");
        super.onRebind(intent);
    }

    private final AIDLTest.Stub mBinder = new AIDLTest.Stub()
    {

        @Override
        public int add(int x, int y) throws RemoteException
        {
            return x + y;
        }

        @Override
        public int multiplication(int x, int y) throws RemoteException {
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值