【Project Combat】Introdução aos primeiros passos com Android AIDL

1. O que é AIDL?

Android AIDL (Android Interface Definition Language) é uma linguagem de descrição de interface
usada para implementar comunicação entre processos (IPC) no sistema Android.

AIDL permite que dados sejam transmitidos entre diferentes processos e pode lidar com solicitações simultâneas.

2. O princípio do Android AIDL

A seguir está uma explicação detalhada dos princípios do Android AIDL:

2.1 Definir arquivo AIDL

No sistema Android, o arquivo AIDL é um tipo de arquivo .aidl usado para definir a interface IPC.
Um arquivo AIDL contém uma ou mais declarações de método que podem ser usadas para fazer chamadas IPC entre o cliente e o servidor.
Por exemplo:

// MyAidl.aidl
package com.example;
 
interface MyAidl {
    
    
    void myMethod(in String arg);
}

2.2 Crie o método no arquivo AIDL

Os métodos definidos em arquivos AIDL podem ser implementados tanto no cliente quanto no servidor.
Esses métodos devem usar modificadores específicos (como in, out, in|out) para especificar o método de passagem de parâmetros. Por exemplo:

// 服务端实现
public class MyService implements MyAidl {
    
    
    @Override
    public void myMethod(String arg) {
    
    
        // 实现逻辑
    }
}
 
// 客户端实现
public class MyActivity extends Activity {
    
    
    private MyAidl mService;
 
    @Override
    protected void onServiceConnected() {
    
    
        Intent intent = new Intent("com.example.MY_SERVICE");
        bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
    }
 
    private ServiceConnection mConnection = new ServiceConnection() {
    
    
        @Override
        public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
    
    
            mService = MyAidl.Stub.asInterface(iBinder);
            try {
    
    
                mService.myMethod("Hello AIDL");
            } catch (RemoteException e) {
    
    
                e.printStackTrace();
            }
        }
    };
}

2.3 Declarar o arquivo AIDL em AndroidManifest.xml

No arquivo AndroidManifest.xml, o arquivo AIDL deve ser declarado para que o sistema possa reconhecer e criar o processo do servidor. Por exemplo:

<service android:name=".MyService" android:exported="true">
    <intent-filter>
        <action android:name="com.example.MY_SERVICE" />
    </intent-filter>
</service>

2.4 Usando Parcelable e Binder para IPC

Durante a chamada IPC, use o objeto Parcelable para transferir dados.
Binder é um mecanismo de comunicação entre processos no sistema Android, que permite o compartilhamento de dados entre diferentes processos.
Através do Binder, o cliente pode chamar o método no servidor, e o servidor também pode acessar os dados do cliente.

2.5 Chame o método no arquivo AIDL no cliente

No cliente, vincule o processo do servidor por meio do método bindService() e use o método Stub.asInterface() para converter o objeto IBinder em um objeto de interface AIDL. Então, você pode chamar diretamente o método definido no arquivo AIDL. Por exemplo:

mService.myMethod("Hello AIDL");

2.6 Implementar o método no arquivo AIDL no servidor

No lado do servidor, todos os métodos definidos no arquivo AIDL devem ser implementados.
Durante a implementação, os parâmetros podem ser passados ​​usando classes Java ou objetos Parcelable customizados.
Por exemplo:

public class MyAidlImpl extends MyAidl.Stub {
    
    
    @Override
    public void myMethod(String arg) throws RemoteException {
    
    
        // 实现逻辑
    }
}

Acho que você gosta

Origin blog.csdn.net/wstever/article/details/132616172
Recomendado
Clasificación