Recientemente, estoy explorando la Arquitectura de Android, que ha sido introducida recientemente por Google. De la documentación he encontrado esto:
public class MyViewModel extends ViewModel {
private MutableLiveData<List<User>> users;
public LiveData<List<User>> getUsers() {
if (users == null) {
users = new MutableLiveData<List<Users>>();
loadUsers();
}
return users;
}
private void loadUsers() {
// do async operation to fetch users
}
}
la actividad puede acceder a esta lista de la siguiente manera:
public class MyActivity extends AppCompatActivity {
public void onCreate(Bundle savedInstanceState) {
MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class);
model.getUsers().observe(this, users -> {
// update UI
});
}
}
Mi pregunta es, voy a hacer esto:
en la
loadUsers()
función estoy obteniendo los datos de forma asincrónica donde primero verificaré la base de datos (Habitación) para esos datosSi no obtengo los datos allí, realizaré una llamada a la API para obtener los datos del servidor web.
Insertaré los datos obtenidos en la base de datos (Habitación) y actualizaré la interfaz de usuario de acuerdo con los datos.
¿Cuál es el enfoque recomendado para hacer esto?
Si empiezo Service
a llamar a la API desde el loadUsers()
método, ¿cómo puedo actualizar la MutableLiveData<List<User>> users
variable a partir de eso Service
?