Récemment, j'explore l'architecture Android, qui a été récemment introduite par Google. D'après la documentation, j'ai trouvé ceci:
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
}
}
l'activité peut accéder à cette liste comme suit:
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
});
}
}
Ma question est, je vais faire ceci:
dans la
loadUsers()
fonction je récupère les données de manière asynchrone où je vais d'abord vérifier la base de données (Room) pour ces donnéesSi je n'obtiens pas les données là-bas, je passerai un appel API pour récupérer les données du serveur Web.
Je vais insérer les données récupérées dans la base de données (Room) et mettre à jour l'interface utilisateur en fonction des données.
Quelle est l'approche recommandée pour ce faire?
Si je lance un Service
appel à l'API à partir de la loadUsers()
méthode, comment puis-je mettre à jour la MutableLiveData<List<User>> users
variable à partir de cela Service
?