Frage

Sollte ich ein ReadWriteLock für die Funktionen des ContentProviders verwenden?

Überprüfen Sie in der Abfrage des ContentProviders GetReadableDableTabase dann, ob es offen ist, und machen Sie die Abfrage. Aber manchmal stürzt es mit datenbankeisspezifischem Exception ab. Dies könnte sein, dass ein anderer Prozess eine Beilage durchführt, die eine GetwritEbleDatabase durchführt, die den ersten schließt.

Ich benutze eine App und einen Dienst, der ständig den ContentProvider abfragt und auf den Inhalt einfügt. Es scheint also, dass der ContentProvider kein ThreadSafe ist.

Könnte es dazu beitragen, die Funktion synchronisiert zu machen?

Vielen Dank!

War es hilfreich?

Lösung

Überprüfen Sie in der Abfrage des ContentProviders GetReadableDableTabase dann, ob es offen ist, und machen Sie die Abfrage. Aber manchmal stürzt es mit datenbankeisspezifischem Exception ab. Dies könnte sein, dass ein anderer Prozess eine Beilage durchführt, die eine GetwritEbleDatabase durchführt, die den ersten schließt.

Sie sollten Ihre Datenbank für die Lebensdauer des ContentProvider, SO VIEL ICH WEISS.

Es scheint also, dass der ContentProvider kein ThreadSafe ist.

Afaik, a ContentProvider wird immer nur auf einen Thread gerufen.

ContentProvider ist meistens eine Fassade und bietet keine intrinsische Sicherheit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top