80 likes | 261 Views
Irina Presa irina.presa@gmail.com. Android Interface Definition Language. De ce AIDL ?. Android nu ofera memorie partajata pentru comunicarea intre procese Procesele trebuie sa-si descompuna obiectele in primitive ce vor fi transferate de sistemul de operare
E N D
Irina Presa irina.presa@gmail.com Android Interface Definition Language
De ce AIDL ? Android nu ofera memorie partajata pentru comunicarea intre procese Procesele trebuie sa-si descompuna obiectele in primitive ce vor fi transferate de sistemul de operare Daca implementam “manual” aceste transferuri => overhead prea mare :(
AIDL Limbaj IDL ce genereaza cod prentru comunicarea intre doua procese Android => IPC :) Ex : - daca avem un proces ce doreste sa apeleze metode pe obiecte din alt proces, vom folosi AIDL pentru a genera codul ce transmite a parametrii Este un mecanism IPC interface-based, similar cu Corba sau COM Foloseste o clasa Proxy pentru a pasa valori intre client si implementare
Implementarea unui IPC folosind AIDL 1. Cream fisier .aidl - defineste interfata (metodele si campurile disponibile clientului) 2. Adaugam fisierul in makefile (in Eclipse cu ADT Plugin) 3. Implementam metodele interfetei (pornind de la acestea, compilatorul AIDL va crea o interfata in Java ce contine o clasa abstracta numita Stub) => cream o clasa ce extinde MyInterface.Stub si implementam metodele declarate in fisierul .aidl 4. Expunem interfata catre clienti
Fisier .aidl • Are o interfata simpla ce suporta urmatoarele tipuri : • Primitive ale limbajului Java (int, boolean, etc) • String • List – elementele trebuie sa fie unul din tipurile din aceasta lista • Map – aceasi restrictie legata de tipul elementelor • CharSequence • Alte interfere generate de AIDL, pasate prin referinta • Clase personalizabile ce implementeaza Parcelable si sunt pasate prin valoare
AIDL Publicarea interfetei extindem Service + implementam Service.onBind(Intent) = o instanta clasei ce implementeaza interfata Interfata Parcelable pentru a trimite o clasa altui proces prin aid Apel metode IPC folosim ServiceConnection pentru a ne conecta la interfata, iar apoi comunicare prin metode/callback-uri,etc (ex: model client-server)
Resurse http://developer.android.com/guide/developing/tools/aidl.html