SQLite
 sql >> Database >  >> RDS >> SQLite

Quando dovrei chiudere un cursore e db?

Devo chiudere il cursore dopo ogni utilizzo o posso tenerlo aperto fino a quando la vista non viene distrutta?

Dipende. Se il risultato del cursore non cambierà nel frattempo (ad es. connessione remota che modifica il DB), allora è OK. Non dimenticare di usare CursorLoader per fare in modo che Android gestisca automaticamente il cursore (ad es. chiudi il cursore se l'app si arresta in modo anomalo).

E lo stesso per il database, può essere aperto una volta creata l'attività che contiene questa vista e chiuso quando l'attività viene distrutta?

Sì, puoi aprire in onResume() e chiudi in onPause() richiamate o quando sai che il tuo database non verrà più interrogato.

Ricevo continuamente un errore 'close() non è mai stato chiamato esplicitamente nel database...' quando faccio come descritto sopra.

Questo è normale solo se l'app si arresta in modo anomalo. Non dovrebbe succedere se lo stai facendo come ho detto sopra.