Trong ứng dụng Android của tôi, tôi sử dụng SQLiteOpenHelper để triển khai ContentProvider. Truy vấn, thêm, xóa các hoạt động là tất cả thông qua ContentProvider.Khi nào tôi nên gọi close() trên SQLiteOpenHelper được sử dụng bởi ContentProvider
Nhưng trong một điện thoại Android của tôi (htc g13), tôi tìm thấy tệp * .db-wal trong thư mục/dữ liệu/dữ liệu/[tên gói]/cơ sở dữ liệu. Và kích thước tệp phát sinh rất nhanh khi hoạt động với ContentProvider. Nó chiếm không gian RAM của người dùng quá nhiều.
Bạn nên đóng SQLiteOpenHelper để giải quyết vấn đề của mình (nó hữu ích) trong bài đăng enter link description here.
Nhưng tôi muốn tìm một "địa điểm" để thêm phương thức "close()" vì tôi không trực tiếp sử dụng SQLiteOpenHelper (sử dụng thông qua ContentProvider). phương thức query() trong ContentProvider phải trả về một con trỏ, và SQLiteDatabse sẽ ở trạng thái mở.
Tôi đang bối rối, những gì hiện tôi làm bây giờ để giữ * .db-wal biến mất và sử dụng ContentProvider bình thường?
Đó là một chuỗi cũ nhưng vẫn có liên quan trên Google vì vậy đây là tham chiếu đến câu trả lời chính xác: http: // stackoverflow.com/questions/4547461/close-the-database-in-a-contentprovider – saulobrito
Tôi nghĩ đây là câu trả lời hay nhất, cảm ơn. – cmoaciopm
Đọc Giải thích tuyệt vời này và không cần phải đóng db trong khi sử dụng contentProvider .. http://stackoverflow.com/questions/14002022/android-sq-lite-closed-exception/25379071#25379071 – Nepster