2010-08-07 36 views
5

Tôi hiểu, ít nhất là trên giấy, sự khác biệt cơ bản giữa Nhà cung cấp nội dung và chỉ truy cập trực tiếp vào SQLiteDatabase. Tôi có một nguyên mẫu hoạt động cho ứng dụng của tôi, và hiện tại nó chỉ là trực tiếp nhấn vào cơ sở dữ liệu. Tôi không thực sự có bất kỳ trải nghiệm nào bằng cách sử dụng mẫu Nhà cung cấp nội dung, nhưng tôi đã phát hiện ra rằng tôi sẽ cần phải chia sẻ một số dữ liệu với một ứng dụng khác.Nhà cung cấp nội dung và truy cập cơ sở dữ liệu trực tiếp (Quản lý giao dịch)

Tôi sẽ chỉ chia sẻ khoảng 2 trong số một tá bảng, vì vậy tôi tự hỏi liệu tôi có nên hoàn toàn làm lại lớp dữ liệu để theo mẫu Nhà cung cấp nội dung hay chỉ hiển thị những bảng đó thông qua Nhà cung cấp nội dung vì lợi ích của ứng dụng khác và vẫn trực tiếp truy cập cơ sở dữ liệu trong ứng dụng chính.

Một trong những vấn đề tôi gặp phải với nguyên mẫu là tôi có một số giao dịch khá phức tạp và mã tôi viết để làm việc đó không được thiết kế đặc biệt tốt và không thể sử dụng lại được. Khi tôi thêm nhiều chức năng hơn cho ứng dụng này, tôi sẽ cần lớp truy cập dữ liệu được thiết kế tốt hơn, trước khi tôi tự viết, có ai biết về bất kỳ tài nguyên nào có mẫu thiết kế cho loại điều này không? Ngoài ra, nếu tôi cần phải đi tuyến đường Nhà cung cấp nội dung, tôi sẽ có quyền kiểm soát vững chắc đối với các giao dịch cơ sở dữ liệu không?

Trả lời

6

Tôi không nghĩ bạn nên gặp sự cố khi chỉ tạo nhà cung cấp nội dung có chức năng bạn cần nằm trên đầu mã cơ sở dữ liệu trực tiếp của bạn. Một nhà cung cấp nội dung thực sự chỉ là một trừu tượng để truy cập dữ liệu có cấu trúc xảy ra trông rất giống SQLite. :) Nếu các phần nội bộ khác nhau của ứng dụng trực tiếp truy cập vào cùng một cơ sở dữ liệu với nhà cung cấp, miễn là mã của hai lượt phát cùng nhau độc đáo, nó sẽ ổn.

Tôi thực sự không phải là người hâm mộ tuyệt đối về "bạn phải luôn sử dụng nhà cung cấp nội dung". Nếu bạn không cần một nhà cung cấp nội dung, không sử dụng một nhà cung cấp nội dung; chỉ cần thực hiện SQLite trực tiếp nếu nó dễ dàng hơn. Nếu bạn cần một nhà cung cấp nội dung cho một số tương tác cụ thể với các ứng dụng khác, hãy viết một điều cho điều đó mà không làm cho nó trở thành một điều phức tạp lớn hỗ trợ tất cả nội dung ứng dụng của bạn thực hiện nội bộ với cơ sở dữ liệu. Nếu điều này là dễ dàng hơn, tuyệt vời. Nó cũng làm cho nó ít có khả năng cho bạn vô tình để lộ dữ liệu cá nhân từ ứng dụng của bạn cho người khác.

+0

Cảm ơn và tôi đồng ý rằng sẽ không có lý do gì để sử dụng nhà cung cấp nội dung chỉ để đáp ứng mẫu. Trong thực tế, việc truy cập trực tiếp vào cơ sở dữ liệu là một mô hình hoàn hảo khả thi. Sau một vài nghiên cứu nữa, có vẻ như ContentProvider không thể quản lý các giao dịch trên nhiều cuộc gọi API như tôi cần (http://www.mail-archive.com/[email protected]/msg42281.html) Tôi sẽ gắn bó với truy cập trực tiếp trong ứng dụng lõi và chỉ cần thêm Trình cung cấp nội dung để hiển thị những gì cần thiết. – Mike

0

Đừng báo cho tôi về điều này, nhưng tôi khá chắc chắn một nhà cung cấp nội dung là cách trừu tượng cách bạn đang cung cấp dữ liệu cho một đối tượng. Bằng cách này, đối tượng của bạn chỉ có thể giao tiếp với nhà cung cấp và không quan tâm đến việc triển khai tức là cách dữ liệu được lưu trữ. Có lẽ bạn có thể muốn cung cấp một số cách khác để lưu trữ dữ liệu của bạn trong tương lai và việc sử dụng mô hình cung cấp nội dung sẽ giúp bạn tiết kiệm rất nhiều công sức, vì nó chỉ là giao tiếp dựa trên giao diện.

Tôi sẽ sử dụng các mẫu thiết kế Android ở mọi nơi có thể. Thành thật mà nói, nhìn vào nó bây giờ tôi thực sự nên làm điều này trong dự án của tôi.

Các vấn đề liên quan