2013-07-10 13 views
21

Tôi đã xem một khóa học về ContentProvider trên Internet thể hiện cách xác định và sử dụng số ContentProvider.GetContentResolver() hoạt động như thế nào?

Tôi đã nhầm lẫn về việc sử dụng phương thức có tên getContentResolver(). Phương thức này trả về cái gì?

My ContentProvider không được mã hóa và mã chỉ viết getContentProvider().query().

Tôi không hiểu cách hoạt động của ContentProvider.

+2

lẽ nhìn nó trong nguồn này sẽ giúp đỡ? – azizbekian

Trả lời

48

Nó trả về Trình phân giải nội dung.


Trình giải quyết nội dung là gì?

Trình giải quyết nội dung là một cá thể chung duy nhất trong ứng dụng của bạn cung cấp quyền truy cập cho các nhà cung cấp nội dung (và các ứng dụng khác) của bạn. Trình giải quyết nội dung hoạt động chính xác như tên của nó ngụ ý: nó chấp nhận các yêu cầu từ khách hàng và giải quyết các yêu cầu này bằng cách chuyển hướng chúng đến nhà cung cấp nội dung có thẩm quyền riêng biệt. Để làm điều này, Trình giải quyết nội dung lưu trữ ánh xạ từ chính quyền cho Nhà cung cấp nội dung. Thiết kế này rất quan trọng vì nó cho phép một phương tiện đơn giản và an toàn để truy cập vào các Nhà cung cấp nội dung của các ứng dụng khác.

Trình phân giải nội dung bao gồm các phương thức CRUD (tạo, đọc, cập nhật, xóa) tương ứng với phương pháp trừu tượng (chèn, xóa, truy vấn, cập nhật) trong lớp Nhà cung cấp nội dung. Trình phân giải nội dung không biết việc triển khai Nhà cung cấp nội dung mà nó tương tác với (cũng không cần biết); mỗi phương thức được chuyển một URI chỉ định Nhà cung cấp nội dung để tương tác.


Nhà cung cấp nội dung là gì?

Trong khi Trình phân giải nội dung cung cấp sự trừu tượng từ Nhà cung cấp nội dung của ứng dụng, Nhà cung cấp nội dung cung cấp sự trừu tượng từ nguồn dữ liệu cơ bản (ví dụ: SQLite database). Chúng cung cấp cơ chế xác định bảo mật dữ liệu (tức là bằng cách thực thi quyền đọc/ghi) và cung cấp giao diện chuẩn kết nối dữ liệu trong một quy trình với mã đang chạy trong một quy trình khác.

Nhà cung cấp nội dung cung cấp giao diện để xuất bản và tiêu thụ dữ liệu, dựa trên mô hình địa chỉ URI đơn giản sử dụng content:// schema. Chúng cho phép bạn phân tách các lớp ứng dụng của mình từ các lớp dữ liệu cơ bản, làm cho sự bất khả tri của nguồn dữ liệu ứng dụng của bạn bằng cách trừu tượng nguồn dữ liệu cơ bản.

Nguồn - androiddesignpatterns

+1

Cảm ơn bạn rất nhiều – Kross

1

getContentResolver() trả về một trường hợp ContentResolver cho gói ứng dụng của bạn.

Dán nó từ developer.android.com

cung cấp nội dung quản lý quyền truy cập vào một tập cấu trúc dữ liệu. Chúng đóng gói dữ liệu và cung cấp các cơ chế để xác định bảo mật dữ liệu. Nhà cung cấp nội dung là giao diện chuẩn kết nối dữ liệu trong một quy trình với mã đang chạy trong một quy trình khác.

Khi bạn muốn truy cập dữ liệu trong nhà cung cấp nội dung, bạn sử dụng đối tượng ContentResolver trong ngữ cảnh của ứng dụng để liên lạc với nhà cung cấp với tư cách khách hàng. Đối tượng ContentResolver giao tiếp với đối tượng nhà cung cấp, một cá thể của một lớp thực hiện ContentProvider. Đối tượng nhà cung cấp nhận các yêu cầu dữ liệu từ các máy khách, thực hiện hành động được yêu cầu và trả về các kết quả.

http://developer.android.com/guide/topics/providers/content-providers.html