2016-11-08 2 views
2

Ich bin neu bei Android kann mir sagen, was ist der Unterschied zwischen cursor.setNotificationUri() und getContentResolver().notifyChange(uri,null) bei der Implementierung Content-Provider.Diference zwischen cursor.setNotificationUri() und getContentResolver(). NotifyChange (uri, null)

Ich habe gesehen, dass cursor.setNotificationUri() in query() Methode verwendet wird und während Aktualisierung oder Einfügen getContentResolver().notifyChange() verwendet wird.

Ich habe wenig Verständnis, dass getContentResolver().notifyChange() Resolver benachrichtigt, dass einige Daten geändert worden sind, aber was macht cursor.setNotificationUri() dort tun?

+1

Mögliche Duplikat von [Was ist cursor.setNotificationUri() verwendet für?] (Http://StackOverflow.com/Questions/21623714/what-is-cursorsetnotificationuri-used-for) – XGouchet

Antwort

13

Sie werden symbiotisch verwendet. Wenn Sie eine ContentProvider implementieren, im Wesentlichen, wenn jemand Ihren Provider abfragt, produzieren Sie eine Cursor und rufen Sie setNotificationUri() darauf mit einigen rationalen Uri (wie die Uri verwendet, um die Abfrage zu machen). Später, wenn Daten, die von Ihrem ContentProvider gedient werden, z. Nach einem Einfügen/Aktualisieren/Löschen rufen Sie getContentResolver().notifyChange(uri, null), so dass jeder, der derzeit eine Cursor (weil sie früher abgefragt) hat, benachrichtigt wird, dass Daten geändert haben und sie erneut abfragen sollten. Wenn sie eine CursorLoader verwenden, erfolgt die erneute Abfrage automatisch.

+0

Dank bro, dass klar meine Zweifel . – FaisalAhmed

+0

Ich habe eine Sache bemerkt, wenn Sie 'setNotificationUri()' nicht in 'query()' Methode und 'notifyChange()' in update/delete/insert Methoden verwenden, funktioniert Ihr Content Provider immer noch genauso. – CopsOnRoad

Verwandte Themen