Notificación correcta de AsyncTaskLoader sobre cambios de datos desde el hilo de fondo
Quiero implementarAsyncTaskLoader
para mi fuente de datos personalizada:
public class DataSource {
public interface DataSourceObserver {
void onDataChanged();
}
...
}
DataSource
mantendrá una lista de observadores registrados y les notificará sobre los cambios.CustomLoader
implementaráDataSourceObserver
. La pregunta es cómo notificar adecuadamente.CustomLoader
ya queLoader.onContentChanged()
debe ser llamado desde el hilo de la interfaz de usuario, pero en mi casoDataSource
operaciones (y llamadas aDataSourceObserver.onDataChanged()
) se hará a partir de hilos de fondo.
Actualizado con idea de Selvin tip.:
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();
}
});
}
}