Android ContentProvider Lock
-
26-10-2019 - |
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!
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.