Android
AIDL
Recherche…
Introduction
AIDL est un langage de définition d'interface Android.
Quelle? Pourquoi? Comment ?
Quelle? C'est un service limité. Ce service AIDL sera actif jusqu'à ce qu'au moins l'un des clients existe. Il fonctionne sur la base du concept de marshaling et unmarshaling.
Pourquoi? Les applications distantes peuvent accéder à votre service + Multi Threading (demande d’application distante).
Comment? Créez le fichier .aidl Implémentez l'interface Exposez l'interface aux clients
Service AIDL
ICalculator.aidl
// Declare any non-default types here with import statements
interface ICalculator {
int add(int x,int y);
int sub(int x,int y);
}
AidlService.java
public class AidlService extends Service {
private static final String TAG = "AIDLServiceLogs";
private static final String className = " AidlService";
public AidlService() {
Log.i(TAG, className+" Constructor");
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
Log.i(TAG, className+" onBind");
return iCalculator.asBinder();
}
@Override
public void onCreate() {
super.onCreate();
Log.i(TAG, className+" onCreate");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.i(TAG, className+" onDestroy");
}
ICalculator.Stub iCalculator = new ICalculator.Stub() {
@Override
public int add(int x, int y) throws RemoteException {
Log.i(TAG, className+" add Thread Name: "+Thread.currentThread().getName());
int z = x+y;
return z;
}
@Override
public int sub(int x, int y) throws RemoteException {
Log.i(TAG, className+" add Thread Name: "+Thread.currentThread().getName());
int z = x-y;
return z;
}
};
}
Connexion de service
// Return the stub as interface
ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Log.i(TAG, className + " onServiceConnected");
iCalculator = ICalculator.Stub.asInterface(service);
}
@Override
public void onServiceDisconnected(ComponentName name) {
unbindService(serviceConnection);
}
};
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow