Potrzebuję odczytać niektóre dane z bazy danych podczas ładowania niektórych danych w innym wątku z transakcji.Przeczytaj dane sqlite, gdy transakcja jest uruchomiona (Android)
Wszystkie moje wątki do odczytywania innych tabel są zatrzymywane do momentu zakończenia transakcji w innym wątku.
Potrzebuję być w stanie odczytać informacje z bazy danych bez martwienia się o inny wątek.
Przeczytałem wiele informacji na temat sqlite, android ... ale nic nie działa, zawsze moje zapytanie o odczyt parametrów jest zablokowane.
Śledziłem to jako @KevinGalligan mówi w tym wątku (What are the best practices for SQLite on Android?) rozwiązywanie blokad i innych problemów.
1) Używam tylko jeden SQLiteOpenHelper (Singleton)
2) Nigdy nie zamykając bazy
ja próbowałem:
rozpocząć transakcję z:
database.execSQL("begin immediate transaction");
lub
database.beginTransactionNonExclusive();
zamiast
database.beginTransaction();
Nie działa, zapytanie zablokowany.
Czytałem o WAL (database.enableWriteAheadLogging()), ale muszę wspierać api 9.
Wszelkie inne rozwiązania, aby przeczytać tymczasem transakcja aktualizuje niektóre tabele? Nie obchodzi mnie, że moje informacje są przestarzałe, ważniejsze jest, aby nie blokować moich wątków.
Synchronizacja jest uniknięcie warunków wyścigu, etc ... To będzie dodać kolejne problemy blokujące do mojego przypadku ... I tylko trzeba czytać bazy danych, nie martwiąc się, czy jestem aktualizacją stół. – culebrins
w takim przypadku będziesz musiał umieścić własną logikę. – SAM