Tôi sử dụng Trình ContentProvider trong ứng dụng của mình và mọi thứ đều hoạt động tốt ngoại trừ một vấn đề nhỏ. Tôi có một chức năng sao lưu và phục hồi sao lưu cơ sở dữ liệu vào một tệp trên thẻ SD và sau đó các tệp sao lưu đó có thể được khôi phục để ghi đè lên cơ sở dữ liệu hiện tại. Toàn bộ quá trình này đang hoạt động, nhưng ContentProvider vẫn giữ tham chiếu/cache tới cơ sở dữ liệu gốc khi một trong các tệp sao lưu cũ được khôi phục. Tôi dường như không thể tìm cách làm mới hoặc tải lại tham chiếu cơ sở dữ liệu trong ContentProvider. Tôi biết công việc khôi phục vì tôi có thể xem các bản ghi trong db với Trình soạn thảo SQLite và khi tôi đóng và mở lại ứng dụng, nó sẽ hiển thị các bản ghi chính xác.Làm mới/Nạp lại cơ sở dữ liệu tham khảo trong ContentProvider tùy chỉnh sau khi khôi phục
Không ai biết một cách để làm điều này? Có cách nào để đóng và mở lại ContentProvider mà tôi không thấy không?
Tôi nhận được một tài liệu tham khảo từ một helper trong onCreate 'db = DbAdapter mới (getContext()); '. Đây là những gì tất cả các ví dụ hiển thị. Tôi nghĩ về việc làm nó theo từng phương pháp, nhưng điều đó có vẻ rất không hiệu quả đối với tôi và loại chậm. Bạn không nghĩ sao? Vâng, tôi đoán tôi sẽ thử nó theo cách đó và xem nó hoạt động như thế nào. Điều đó không phải là để lại một loạt các đối tượng db mở cũng như tôi có nhiều truy vấn/cập nhật hay ContentProvider sẽ quản lý chúng đúng cách? – ssuperz28
Hãy xem cách các nhà cung cấp hệ thống như AlarmProvider được thực hiện như một ví dụ về những gì tôi đang nói. Nhận helper trong onCreate() và sau đó là kiểu db khi cần thiết. ContentProvider quản lý quyền truy cập yêu cầu cho bạn, đó là một trong những lý do để sử dụng nó. Đây là cách tôi xây dựng các nhà cung cấp của tôi cũng như: http://codesearch.google.com/#cZwlSNS7aEw/packages/apps/DeskClock/src/com/android/deskclock/AlarmProvider.java&exact_package=android – Devunwired
Ahhh ... Tôi hiểu rồi. Tôi đang thực sự sử dụng một lớp dbadapter có chứa helper của tôi và mở db. Tôi đang di chuyển từ ứng dụng API v7 để sử dụng thư viện tương thích mới. Tôi sẽ tách người trợ giúp và thử nó theo cách này.Tôi đoán tôi chỉ không nhận ra tôi nên đã chỉ được gọi là một người trợ giúp vì vậy tôi nghĩ rằng tôi đã làm theo các ví dụ một cách chính xác. Doh! Cảm ơn! – ssuperz28