2010-05-29 28 views
5

Tôi có nhiều năm kinh nghiệm với Microsoft .NET phát triển (chủ yếu là C#) và đã làm việc để tăng tốc độ trên Android và Java. Cho đến nay, tôi đã xây dựng một ứng dụng nhỏ với một vài màn hình và một nhà cung cấp nội dung hoạt động.Trong ứng dụng Android, tôi có nên có một nhà cung cấp nội dung cho mỗi bảng hay chỉ một nhà cung cấp cho toàn bộ ứng dụng không?

Tất cả các ví dụ tôi đã thấy để phát triển nhà cung cấp nội dung thường làm việc với một bảng duy nhất, vì vậy tôi có ấn tượng rằng đây là quy ước.

Tôi đã xây dựng thêm một vài nhà cung cấp nội dung cho các bảng khác và chạy vào "URI không xác định" IllegalArgumentException khi tôi thử kiểm tra chúng. Ngoại lệ này được một trong những nhà cung cấp nội dung của tôi ném, nhưng không phải là nhà cung cấp nội dung tôi định gọi. Có vẻ như ứng dụng của tôi đang sử dụng nhà cung cấp nội dung đầu tiên trong tệp AndroidManifest.xml, bây giờ tôi tự hỏi liệu tôi có nên chỉ có một nhà cung cấp nội dung duy nhất cho toàn bộ ứng dụng hay không. Tôi có thể sử dụng dịch vụ này không? Không.

Có thực tiễn và/hoặc ví dụ nào tốt nhất để làm việc với nhiều bảng trong ứng dụng Android không? Tôi có nên có một nhà cung cấp nội dung cho mỗi bảng hay chỉ một nhà cung cấp cho toàn bộ ứng dụng? Nếu trước đây, làm cách nào để giải quyết các URI cho nhà cung cấp thích hợp? Nếu sau này, làm cách nào để giữ cho mã của nhà cung cấp nội dung của tôi không bị ô nhiễm với các câu lệnh chuyển đổi?

Trả lời

2

99% ứng dụng Android không cần nhà cung cấp nội dung.

Nhà cung cấp nội dung có một mục đích chính: liên lạc liên ngành. Nếu bạn là:

  • mong đợi các nhà phát triển khác để truy cập vào các nhà cung cấp nội dung của bạn, hoặc
  • được tích hợp để Android ở những nơi mà yêu cầu một nhà cung cấp nội dung (ví dụ, gợi ý tìm kiếm cho Hộp tìm kiếm nhanh)

rồi, và chỉ sau đó, bạn có triển khai nhà cung cấp nội dung hay không.

Nếu không, tất cả những gì bạn đang làm là thêm phí vào ứng dụng và làm cho mã của bạn khó bảo trì hơn. Vì vậy, nếu ứng dụng của bạn là một trong số 99% không cần nhà cung cấp nội dung, chỉ cần loại bỏ ứng dụng bạn có và truy cập nội dung của bạn bằng một số phương tiện khác (ví dụ: SQLiteDatabase).

+0

Làm cho tinh thần. Tôi đã loại bỏ các nhà cung cấp nội dung và chỉ cần đi với một lớp DBAdapter. Mã của tôi sạch hơn và nhiều hơn nữa giống như các đối tượng kinh doanh mà tôi từng làm việc cùng. Cảm ơn đã giúp đỡ. –

+6

Bị bỏ phiếu, vì điều này không trả lời câu hỏi – Mbrevda

+2

Đây không phải là câu trả lời cho câu hỏi – kord

10

Tôi cũng không đồng ý với CommonsWare. Nếu bạn muốn tránh IllegalStateExceptions và các vấn đề khác bạn cần phải sử dụng Cursorloader. Họ xử lý nhiều thứ cho bạn và đảm bảo con trỏ bị trơn. Vì vậy, bạn cần Nhà cung cấp nội dung. Câu hỏi ban đầu chưa được trả lời. tôi không biết thực hành tốt nhất cho số lượng hoặc nhà cung cấp nội dung & bảng. nhưng trong phương thức .query bạn kiểm tra id URI. bạn có thể kiểm tra nếu id uri có một giá trị cụ thể và xây dựng truy vấn của bạn theo cách đó.

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