Nella mia app Android, utilizzo SQLiteOpenHelper per implementare ContentProvider. Le operazioni di query, aggiunta, cancellazione sono tutte tramite ContentProvider.Quando dovrei chiamare close() su SQLiteOpenHelper utilizzato da ContentProvider
Ma in uno dei miei telefoni Android (htc g13), ho trovato il file * .db-wal nella directory/data/data/[nome pacchetto]/database. E le dimensioni del file aumentano molto velocemente quando si utilizza ContentProvider. Occupava troppo spazio nella RAM dell'utente.
Si consiglia di chiudere SQLiteOpenHelper per risolvere il mio problema (è utile) nel post enter link description here.
Ma voglio trovare un "luogo" per aggiungere il metodo "close()" poiché non sto usando SQLiteOpenHelper direttamente (usando tramite ContentProvider). il metodo query() in ContentProvider deve restituire un cursore e SQLiteDatabse deve rimanere nello stato aperto.
Sono confuso, che spettacolo faccio ora per mantenere * .db-wal andato e utilizzare ContentProvider normalmente?
Questo è un thread precedente ma ancora pertinente su Google, ecco un riferimento alla risposta corretta: http: // stackoverflow.it/questions/4547461/closing-the-database-in-a-contentprovider – saulobrito
Penso che questa sia la migliore risposta, grazie. – cmoaciopm
Leggi questa fantastica spiegazione e non è necessario chiudere il db durante l'utilizzo di contentProvider. Http://stackoverflow.com/questions/14002022/android-sq-lite-closed-exception/25379071#25379071 – Nepster