Ho un'app che utilizza il cursore per selezionare i dati tramite rawQuery da un db sqlite per popolare un oggetto ListView in Android ;. Ogni volta che l'utente fa clic su un oggetto listview creo una nuova istanza di attività per ri-popolare listview. È meglio chiamare cursor.close()
e db.close()
per evitare problemi di memoria? In realtà ho db.close()
in OnDestroy()
della mia attività.Quando chiudere il cursore in Android?
risposta
È possibile chiudere cursor
dopo aver recuperato i valori per quell'oggetto particolare all'interno del metodo.
btw ... Non è necessario ricreare uno listview
ogni volta per un evento click dell'utente. Basta notificare che ci sono dei cambiamenti nei dati dell'adattatore che è stato impostato in listview.
Qualcosa di simile
youradaptername.notifyDataSetChanged();
Questo dovrebbe ripopolare contenuti all'interno ur listview
automaticamente.
dove aggiungere questa riga youradaptername.notifyDataSetChanged() ;? oncreate() o setitemclicklistener? – Metalhead1247
notifyDataSetChanged() deve essere chiamato in un punto in cui si sa che i dati nell'adattatore sono cambiati. Questo costringerà la listview a ridisegnare le sue viste che a sua volta ti aiuteranno a vedere i nuovi dati nella lista. Dove stai andando a invocare notifyDataSetChanged() dipende dalle tue necessità. Esempio di riferimento a questo indirizzo http://stackoverflow.com/questions/16441298/android-call-notifydatasetchanged-from-asynctask – DeRagan
Bene se si sta creando una nuova istanza ogni volta che si svolge la stessa attività (anche se non sono sicuro che sia una buona pratica di programmazione). Puoi chiudere il cursore non appena hai finito di attraversare/iterare attraverso la sorgente della listview.
Esempio:
Un esempio di implementazione sarebbe qualcosa di simile
//Pre cursor code
startManagingCursor(cursor);
if (cursor.moveToFirst()) {
do {
if (cursor.getString(0).equals(value)) {
cursor.close();
a = true;
return a;
}
} while (cursor.moveToNext());
}
//Close cursor here, when its work is complete
cursor.close();
//Post cursor code ...
È sempre buona norma avvolgere il cursore.close() in una clausola finally. In questo modo si assicura che il cursore sia chiuso, indipendentemente dal fatto che durante l'elaborazione venga generata una RuntimeException. – schnatterer
- 1. Chiudere cursore sul terminale remoto
- 2. Idioma per chiudere un cursore
- 3. Quando chiudere il client WCF?
- 4. Android: abbiamo bisogno di chiudere Db dopo aver chiuso il cursore
- 5. In Python con sqlite è necessario chiudere un cursore?
- 6. Cursore Android in lingue RTL
- 7. ASP classico - Quando chiudere il recordset
- 8. Quando dovremmo chiudere EntityManagerFactory?
- 9. Android: Il cursore della finestra è pieno
- 10. Android quando dovrei aprire e chiudere le connessioni db?
- 11. Come chiudere la tastiera in SearchView Android?
- 12. Come chiudere un'altra app in Android?
- 13. Come chiudere un progetto in Android Studio?
- 14. Android: mostra solo il cursore in edittext quando viene visualizzata la tastiera
- 15. MultiLine EditText in Android con il cursore che inizia sopra
- 16. Il cursore di modifica è invisibile in Android 4.0
- 17. Quando chiudere la connessione al database MongoDB in Nodejs
- 18. Riempire filatore dal cursore in Android
- 19. Come fermare il cursore quando si passa con il mouse?
- 20. Dimensione massima del cursore Android
- 21. psycopg2 con il pallone, quando chiudere la connessione
- 22. C# imposta il cursore sul cursore "Working in Background"
- 23. T-SQL: Un modo corretto di CHIUDERE il cursore/DEALLOCATE nel trigger di aggiornamento
- 24. Come chiudere un messaggio di avviso Android
- 25. come terminare tutte le attività e chiudere l'applicazione in Android?
- 26. Come chiudere il PushViewController?
- 27. Come chiudere l'attività e tornare alla precedente attività in Android
- 28. Chiudere l'app quando NSWindow si chiude
- 29. Come posso rilevare quando il cursore XAML è stato completato?
- 30. Visualizzazione di un cursore del database Android
forse questo potrebbe aiutare http://stackoverflow.com/questions/8532427/how-do-i-close-the -cursore-e-database-sicuro – Majid