ich eine Klasse definieren, die Parcelable
implementiert, wie folgt aus:So verwenden Parcel in AIDL
public class Book implements Parcelable
Und ich weiß, dass ich diese Klasse in AIDL wie diese Datei verwenden können:
import com.okay.demo.aidl.bean.Book;
interface IBookManager {
void addBook(in Book book);
}
Aber was Ich möchte wissen, dass kann ich nur Parcelable
in AIDL-Datei annehmen, ich kenne die Implementierungsklasse nicht? Kann ich so verwenden Parcelable
gerade:
interface IBookManager {
void addData(in Parcelable data);
}
ich versucht hatte, Book
mit Parcelable
ersetzen, aber es hat nicht funktioniert.
Oder kann es das nicht in AIDL tun?
nein, Sie nicht 'Parcelable' Schnittstelle hier verwenden können, hat es eine sein Klasse, die diese Schnittstelle implementiert – pskink
Natürlich können Sie Parcelable für IPC so verwenden, nur nicht mit Out-of-Box-AIDL-Tool. Schau dir diese Bibliothek an, die ich geschrieben habe: https://github.com/chdir/aidl2. Es erzeugt Code, der Binder-Objekte direkt verwendet, um Laufzeit-definierte Parcelables, Serialisables und sogar andere IPC-Schnittstellen zwischen Prozessen zu übergeben. – user1643723