Recentemente, estou explorando a arquitetura Android, que foi introduzida recentemente pelo Google. Na documentação , encontrei o seguinte:
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
}
}
a atividade pode acessar essa lista da seguinte maneira:
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
});
}
}
Minha pergunta é, vou fazer isso:
na
loadUsers()
função, estou buscando os dados de forma assíncrona, onde primeiro verificarei o banco de dados (Room) para esses dadosSe eu não conseguir os dados lá, farei uma chamada de API para buscar os dados do servidor web.
Vou inserir os dados buscados no banco de dados (Room) e atualizar a IU de acordo com os dados.
Qual é a abordagem recomendada para fazer isso?
Se eu começar Service
a chamar a API a partir do loadUsers()
método, como posso atualizar a MutableLiveData<List<User>> users
variável a partir disso Service
?