Android aidl简单demo

Aidl传递参数类型

1.基本数据类型(除short类型)

2.String、charSequence

3.List,map

4.parcelable

服务端:

第1步:定义一个*.aidl文件,然后 make project

interface IMyAidlInterface {
     String getName();
}

第2步:定义一个自己的service

public class MyService extends Service
{

    public MyService()
    {

    }

    @Override
    public IBinder onBind(Intent intent)
    {
        return new MyBinder();
    }

    class MyBinder extends IMyAidlInterface.Stub
    {

        @Override
        public String getName() throws RemoteException
        {
            return "test";
        }
    }
}

第3步:记得注册服务

<service android:name=".MyService">
    <intent-filter>
        <action android:name="com.example.calculate.CalculateService" />
    </intent-filter>
</service>

这样服务端就好了,下面客户端

aidl位置要保持一致,客户端和服务端aidl包名一定是一样的

客户端使用service

  Intent intent=new Intent("com.luo.mytaobao");
    intent.setAction("com.example.calculate.CalculateService");
    intent.setPackage("com.luo.mytaobao");
    bindService(intent, new ServiceConnection()
    {

        @Override
        public void onServiceConnected(ComponentName name, IBinder service)
        {

            iMyAidlInterface = IMyAidlInterface.Stub.asInterface(service);
        }

        @Override
        public void onServiceDisconnected(ComponentName name)
        {

        }
    }, BIND_AUTO_CREATE);
}

public void onClick(View view)
{
    try
    {
        Toast.makeText(MainActivity.this, iMyAidlInterface.getName(), Toast.LENGTH_SHORT).show();
    }
    catch (RemoteException e)
    {
        e.printStackTrace();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_30711091/article/details/83345505