2011-01-07 5 views
1

Ich mache meinen eigenen Content-Provider. In der Dokumentation des Inhaltsanbieters heißt es, dass die Methoden wie Abfrage, Einfügen und Aktualisieren threadsicher sein müssen. Sollte ich sie also mit einem Mutex bewachen?Muss ich einen Mutex in Android Content-Provider-Methoden verwenden?

private static Mutex cpMutex; 

public Cursor query(){ 
    cpMutex.lock(); 
    //do stuff 
    cpMutex.unlock(); 
    return result; 
} 

public Uri insert(){ 
    cpMutex.lock(); 
    //do stuff 
    cpMutex.unlock(); 
    return result; 
} 

Antwort

2

Sie sollten wahrscheinlich nicht synching verwenden, Sie sollten nur Thread-sichere Operationen durchführen. Was machst du, das ist nicht threadsicher?

+0

Manipulation der Backend-Datenstruktur, für die der Inhaltsanbieter ein Frontend ist. Ich bin mir ziemlich sicher, dass ich eine SQLLite-Datenbank verwenden werde. Wird es für die Synchronisation für mich sorgen? –

+1

Ich weiß nicht, was die Hazienda-Datenstruktur ist. Aber die SQL-Klasse ist threadsicher. – Falmarri

+0

Entschuldigung. Ich meinte Backend. Die Autokorrektur ist manchmal schädlich. :) Aber gut zu wissen SQL ist threadsafe. –

1

Sie müssen Mutex nicht verwenden. Mach einfach die Methoden synchronisiert. Wie so:

public synchronized Cursor query(){ 
... 
} 
+0

Ja, ich denke, das würde so lange funktionieren, wie ich die Methoden auf dem UI-Thread nicht ausgeführt habe, was in Bezug auf Programmierpraxis nicht sehr gut aussieht. Andererseits gilt das Gleiche für meine ursprüngliche Idee, Mutex (D'oh!) Zu verwenden. Ich denke, Falmarri's Antwort ist wahrscheinlich der richtige Weg. –