Richtige Benachrichtigung von AsyncTaskLoader über Datenänderungen vom Hintergrund-Thread
Ich möchte umsetzenAsyncTaskLoader
für meine benutzerdefinierte Datenquelle:
public class DataSource {
public interface DataSourceObserver {
void onDataChanged();
}
...
}
DataSource
führt eine Liste der registrierten Beobachter und benachrichtigt sie über Änderungen.CustomLoader
umsetzen wirdDataSourceObserver
. Die Frage ist, wie man richtig benachrichtigtCustomLoader
schon seitLoader.onContentChanged()
muss aber in meinem fall vom ui thread aufgerufen werdenDataSource
Operationen (und Anrufe anDataSourceObserver.onDataChanged()
) wird aus Hintergrund-Threads erstellt.
Aktualisiert mit Idee von Selvin Tipp:
public class CustomLoader extends AsyncTaskLoader<...> implements DataSource.DataSourceObserver {
private final Handler observerHandler;
public CustomLoader(Context context) {
super(context);
observerHandler = new Handler()
}
@Override
public void onDataChanged() {
observerHandler.post(new Runnable() {
@Override
public void run() {
onContentChanged();
}
});
}
}