Sto provando con greenDAO e finora sta andando piuttosto bene. Una cosa che non sembra essere coperta dai documenti o dal sito Web (o da qualsiasi luogo :() è come gestisce la sicurezza dei threadEsistono best practice per la sicurezza delle filettature greenDAO?
Conosco le basi citate altrove, come "usa una singola sessione dao" (pratica generale per Android + SQLite) e capisco abbastanza bene il modello di memoria Java: gli interni delle biblioteche appaiono anche sicuri o almeno costruiti con questa intenzione, ma nulla di ciò che ho visto copre:
greenDAO esegue il caching delle entità per impostazione predefinita Questo è eccellente per un programma completamente single-threaded - trasparente e un enorme incremento di prestazioni per la maggior parte degli usi, ma se per esempio, loadAll()
e poi modifichi uno degli elementi, sto modificando lo stesso oggetto globale attraverso la mia app. Se lo sto usando sul thread principale (ad es. Per la visualizzazione) e aggiornando il DB su un thread in background (come è giusto e corretto), ci sono problemi di threading evidenti a meno che non si prenda particolare cura.
GreenDAO fa qualcosa "sotto la cappa" per proteggersi da problemi di threading a livello dell'applicazione? Ad esempio, modificare un'entità memorizzata nella cache nel thread dell'interfaccia utente salvandola in un thread in background (meglio sperare che non si interfordino! Specialmente quando si modifica una lista!)? Ci sono delle "migliori pratiche" da proteggere contro di loro, al di là delle preoccupazioni generali sulla sicurezza del filo (cioè qualcosa che greenDAO si aspetta e funziona bene con)? O l'intera cache è fatalmente viziata da un punto di vista della sicurezza multithreaded?