BẰNG CÁCH SỬ DỤNG AIDL ĐỂ HỖ TRỢ CÁC THÔNG TIN LIÊN LẠC GIỮA HAI QUÁ TRÌNH CHO CÁC DỊCH VỤTrong chương 9, "Làm việc trong các nền," bạn biết làm thế nào để tạo ra các dịch vụ cho các ứng dụng của bạn. Ở đây, bạn sẽ tìm hiểu làm thế nào để sử dụng ngôn ngữ định nghĩa giao diện Android (AIDL) để hỗ trợ các thông tin liên lạc giữa hai quá trình phong phú (IPC) giữa các dịch vụ và các ứng dụng compo¬nents, bao gồm thành phần đang chạy trong các ứng dụng khác nhau hoặc trong phạm vi quy trình riêng biệt.Điều này mang lại cho dịch vụ của bạn khả năng hỗ trợ nhiều ứng dụng trên ranh giới tiến trình.Để vượt qua các đối tượng giữa các quá trình, bạn phải deconstruct chúng thành nguyên thủy cấp hệ điều hành OS tiềm ẩn có thể sau đó nguyên soái trên ranh giới của ứng dụng. Điều này được thực hiện bằng cách thực hiện chúng như là Parcelables.AIDL được sử dụng để đơn giản hóa các mã cho phép của bạn quá trình trao đổi các đối tượng. Nó là tương tự như giao diện như COM hoặc Corba trong nó cho phép bạn tạo các phương pháp công cộng trong dịch vụ của bạn có thể chấp nhận và trở về đối tượng tham số và giá trị trả lại giữa các quá trình.Thực hiện một giao diện AIDLAIDL hỗ trợ các loại dữ liệu sau:► Java ngôn ngữ nguyên thủy (int, boolean, phao, char, vv).► Các giá trị chuỗi và CharSequence.► danh sách đối tượng (bao gồm cả generics), nơi mỗi phần tử là một loại hình được hỗ trợ. Nhận lớp luôn luôn sẽ nhận được danh sách đối tượng instantiated như một ArrayList.► bản đồ đối tượng (không bao gồm các generics), nơi mỗi chìa khóa và các yếu tố là một loại hình được hỗ trợ. Nhận lớp luôn luôn sẽ nhận được các đối tượng đồ instantiated như một HashMap.► AIDL-generated interfaces (covered later). An import statement is always needed for these.► Classes that implement the Parcelable interface (covered next). An import statement is always needed for these.The following sections demonstrate how to make your classes Parcelable, create an AIDL Service definition, and implement and expose that Service definition for use by other application components.Making Classes ParcelableIn order for non-native classes to be passed between processes, they must implement the Parcelable interface. This lets you decompose the properties within your classes into primitive types stored within a Parcel that can be marshaled across process boundaries.Implement the writeToParcel method to decompose your class object, using the write* methods to save object properties into the outgoing Parcel object:public void writeToParcel(Parcel out, int flags) { out.writeLong(myLong); out.writeString(myString); out.writeDouble(myDouble); To re-create an object that’s been saved as a parcel, implement the public static Creator field (which implements a new Parcelable.Creator class) to create a new object based on an incoming Parcel by reading the incoming parcel using its read* methods:private MyClass(Parcel in) { myLong = in.readLong(); myString = in.readString(); myDouble = in.readDouble();}Listing 18-13 shows a basic example of using the Parcelable interface for the Quake class you’ve been using in the ongoing Earthquake example.
đang được dịch, vui lòng đợi..
