AndroidStudio的AIDL demo

82324899 2015-05-18

建立两个module,一个是AIDL服务,另一个是客户端。

AS的module就相当于Eclipse里面的project,AS的project相当于Eclipse的Workspace。

一。服务端

1.建立模块module1

2.在module1工程下,在module1\src\main\下建立aidl文件夹,再建立一个和AndroidManifest里面包名一样的包,

module1\src\main\aidl\interview\cchen\module1,里面建立AIDL文件

路径方法必须这样,然后编译工程。

会在module1\build\generated\source\aidl\debug\interview\cchen\module1路径下,生成与AIDL对应的java接口文件。

这个Java文件时自动生成的,最好不要手动修改,想修改接口,直接修改AIDL文件即可。

3.实现AIDL的接口

public class Service1 extends Service {
    private int mCount;
    IMyAidlInterface1.Stub binder = new IMyAidlInterface1.Stub() {
        @Override
        public void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat, double aDouble, String aString) throws RemoteException {

        }

        @Override
        public String getValue() throws RemoteException {
            return mCount++ + " times";
        }

        @Override
        public void clear() throws RemoteException {
            mCount = 0;
        }
    };

    public Service1() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        return binder;
    }
}

4.修改module1的gradle文件,第一行改为applyplugin:'com.android.library',作为一个库工程,同时去掉applicationId。

二。客户端

1.建立模块module1_client

2.修改module1_client的gradle文件,在dependencies中添加compileproject(':module1'),引用module1

3.可以通过AIDL和Service1通讯

private IMyAidlInterface1 mService1;
    ServiceConnection connection = new ServiceConnection() {

        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            mService1 = IMyAidlInterface1.Stub.asInterface(service);
            updateFromAidl();
        }


        @Override
        public void onServiceDisconnected(ComponentName name) {
            mService1 = null;
        }
    };


    private void updateFromAidl() {
        try {
            String fromAidl = mService1.getValue();
            txt1.setText(fromAidl);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

相关推荐