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.► tạo ra AIDL giao diện (mặt sau). Một tuyên bố nhập khẩu luôn luôn là cần thiết đối với những.► Các lớp học thực hiện các giao diện Parcelable (mặt sau). Một tuyên bố nhập khẩu luôn luôn là cần thiết đối với những.Phần sau đây chứng minh làm thế nào để làm cho các lớp học Parcelable, tạo ra một định nghĩa Dịch vụ AIDL, thực hiện và vạch trần rằng định nghĩa Dịch vụ để sử dụng bởi các thành phần khác của ứng dụng.Làm cho các lớp học ParcelableĐể cho các lớp học không phải là bản được thông qua giữa các quá trình, họ phải thực hiện các giao diện Parcelable. Điều này cho phép bạn phân hủy các thuộc tính trong lớp học của bạn vào loại nguyên thủy được lưu trữ trong một lô có thể được marshaled trên ranh giới tiến trình.Thực hiện phương pháp writeToParcel để phân hủy các đối tượng lớp học của bạn, sử dụng phương pháp viết * lưu thuộc tính đối tượng vào các đối tượng bưu kiện đi:khu vực void writeToParcel (bưu kiện ra, int cờ) {out.writeLong(myLong); out.writeString(myString); out.writeDouble(myDouble); Để tái tạo một đối tượng được lưu dưới dạng một bưu kiện, thực hiện các lĩnh vực công tác giả tĩnh (mà thực hiện một tầng lớp mới Parcelable.Creator) để tạo ra một đối tượng mới dựa trên một bưu kiện đến bằng cách đọc các bưu kiện đến bằng cách sử dụng phương pháp đọc * của mình:riêng MyClass (bưu kiện trong) {myLong = in.readLong(); myString = in.readString(); myDouble = in.readDouble();}Danh sách 18-13 cho thấy một ví dụ cơ bản của việc sử dụng giao diện Parcelable cho lớp đất bạn đã sử dụng trong ví dụ trận động đất liên tục.
đang được dịch, vui lòng đợi..
