2011-12-21 24 views
35

để hiểu số AIDL trong android, tôi muốn có một ví dụ thực tế về cuộc sống, có nghĩa là tại kịch bản phát triển nào chúng tôi cần sử dụng AIDL.Ví dụ về AIDL sử dụng

bằng cách đọc Android Documents ... Nó đặt tôi trong sự nhầm lẫn và rất nhiều câu hỏi, vì vậy rất khó để đọc toàn bộ doc đối với tôi, bất cứ ai có thể giúp tôi

  1. là nó để giao tiếp với bên ngoài điện thoại.

  2. hoặc để giao tiếp với các ứng dụng khác nhau, (tại sao chúng ta cần phải giao tiếp với các ứng dụng khác)

  3. những loại dịch vụ mà họ đang nói trong tài liệu

Trả lời

31

AIDL được sử dụng cho Binder. Binder là một cơ chế để thực hiện các cuộc gọi RPC trên/từ một Dịch vụ Android.

Khi nào sử dụng AIDL? Khi bạn cần một Dịch vụ. Khi nào bạn cần một Dịch vụ? Nếu bạn muốn chia sẻ dữ liệu kiểm soát nội dung nào đó trong một ứng dụng khác, bạn cần một dịch vụ sử dụng AIDL làm giao diện. (Nhà cung cấp nội dung được sử dụng khi chỉ chia sẻ dữ liệu).

Dịch vụ có thể được sử dụng trong ứng dụng của bạn dưới dạng cuộn mô hình trong mẫu MVC.

+0

ok bây giờ tôi hiểu rồi, cảm ơn người đàn ông, giả dụ nếu tôi muốn điều khiển android quay số điện thoại sẵn có hoặc có thể trong trường hợp tôi muốn theo dõi tất cả các ứng dụng khác trên điện thoại thì tôi cần sử dụng AIDL ... sửa tôi nếu tôi sai. –

+2

Nó phụ thuộc. Một số thông tin (như liên hệ) có sẵn thông qua các nhà cung cấp nội dung. Bạn có thể thấy nhà cung cấp nội dung dưới dạng lưu trữ dữ liệu liên tục được chia sẻ giữa các ứng dụng cho dữ liệu cụ thể. AIDL/dịch vụ/ràng buộc được sử dụng để giao tiếp. Ý tôi là, không chỉ chia sẻ dữ liệu, mà còn tương tác với các thành phần khác. Bằng cách sử dụng AIDL, bạn có thể điều khiển điện thoại. – Jordi

+0

ok cảm ơn người đàn ông tôi đã nhận nó !!! –

10

AIDL là ngôn ngữ định nghĩa giao diện Android. Điều này về cơ bản cho phép bạn thực hiện các cuộc gọi IPC.

Sử dụng: Có những tình huống mà một quy trình cần trao đổi với người khác để nhận thông tin nhất định.

Ví dụ: Quy trình A cần thông tin về trạng thái Cuộc gọi để xác định xem cần phải thay đổi Loại cuộc gọi (ví dụ: Audio to Video Call hoặc Vice-versa). Bạn có thể nhận trạng thái cuộc gọi từ một số người nghe nhất định nhưng phải thay đổi Loại cuộc gọi từ Âm thanh thành Video, Quy trình A cần móc để thay đổi. Điều này "Hook" hoặc cách thay đổi cuộc gọi thường là một phần của Telephony Lớp học là một phần của Quá trình điện thoại. Vì vậy, để có được thông tin như vậy từ quá trình Telephony, One có thể viết một dịch vụ điện thoại (hoạt động như một phần của quy trình điện thoại Android), cho phép bạn truy vấn hoặc thay đổi loại cuộc gọi. Kể từ Process A (Client) đây đang sử dụng này Dịch vụ từ xa mà giao tiếp với điện thoại quá trình để thay đổi kiểu cuộc gọi, nó cần phải có một giao diện để nói chuyện với dịch vụ. Kể từ Dịch vụ điện thoại là nhà cung cấp và Quy trình A (khách hàng) là người dùng, cả hai đều cần phải đồng ý về giao diện (giao thức) mà họ có thể hiểu và tuân thủ. Giao diện như vậy là AIDL, cho phép bạn nói chuyện (thông qua dịch vụ từ xa) với quá trình Telephony và hoàn thành công việc.

Đơn giản chỉ cần đặt trong điều khoản laymen, AIDL là một "thỏa thuận" Khách hàng được, mà nói với nó về làm thế nào để nói chuyện với dịch vụ. Bản thân dịch vụ sẽ có một bản sao của thỏa thuận đó (vì nó được xuất bản cho các khách hàng của nó).Sau đó, dịch vụ sẽ thực hiện các chi tiết về cách nó xử lý khi yêu cầu đến hoặc nói khi ai đó đang nói chuyện với nó

Vì vậy, quá trình A yêu cầu thay đổi cuộc gọi qua Dịch vụ, Dịch vụ nhận được yêu cầu, nó nói chuyện với quá trình điện thoại (vì nó là một phần của nó) và thay đổi gọi video.

Một điểm quan trọng cần lưu ý là, AIDL chỉ cần thiết cho môi trường đa luồng. Bạn có thể làm với Binders nếu bạn không cần phải đối phó với vòm đa luồng.

3

Một ví dụ khác trên thế giới thực là Giấy phép Google Play đang sử dụng AIDL.

0

1 - là dành cho giao tiếp với bên ngoài điện thoại. Giao tiếp với bên ngoài ứng dụng.

2 - hoặc liên lạc với các ứng dụng khác nhau, (tại sao chúng ta cần liên lạc với các ứng dụng khác) Như GodOnScooter đã đề cập khi ứng dụng của bạn liên lạc với dịch vụ điện thoại thực sự là một phần khác.

3 - những loại dịch vụ mà họ đang nói trong tài liệu Đây là một dịch vụ chạy trong quá trình khác nhau của một hệ thống, để liên kết với dịch vụ này, bạn cần IPC (inter process communication), AIDL được sử dụng để thực hiện điều này.