Nella mia applicazione Android devo inserire dati in diverse tabelle SQLite da diversi thread (un thread per l'inserimento in una tabella e ci sono 5 tabelle). Ci sono un sacco di dati in modo che uso beginTransaction()
->setTransactionSuccessful()
->endTransaction();
in ogni filo e tutti i thread iniziano contemporaneamente, ma in seconda o, talvolta, terzo filo Ho sempre avuto questa eccezione:Impossibile eseguire l'operazione perché non c'è transazione corrente quando si inserisce nel database
io uso singola connessione SQLite (singleton) come era mentioned here ma tuttavia questo problema rimane.Così spero in qualche aiuto.Grazie in anticipo!
P.S E se ho condizioni di gara quale altro modo dovrei usare per l'inserimento multithread?
Ho aggiunto alcune idee alla mia risposta @AlexanderKaraberov. – Gray
Avere una classe (solo un DAO) che esegue le modifiche effettive del database. Quindi i tuoi thread chiamerebbero 'insert()' o alcuni di questi. Il metodo sarebbe 'sincronizzato' e deciderebbe se ho bisogno di avviare la transazione se non era già stata avviata o terminare una transazione se era già stata avviata. – Gray