Правильное уведомление AsyncTaskLoader об изменениях данных из фонового потока
Я хочу реализоватьAsyncTaskLoader
для моего пользовательского источника данных:
public class DataSource {
public interface DataSourceObserver {
void onDataChanged();
}
...
}
DataSource
будет вести список зарегистрированных наблюдателей и уведомлять их об изменениях.CustomLoader
будет реализовыватьDataSourceObserver
, Вопрос в том, как правильно уведомитьCustomLoader
посколькуLoader.onContentChanged()
должен быть вызван из потока пользовательского интерфейса, но в моем случаеDataSource
операции (и призывы кDataSourceObserver.onDataChanged()
) будет сделано из фоновых тем.
Обновлено с идеей от Сельвина:
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();
}
});
}
}