Kürzlich beschäftige ich mich mit Android-Architektur, die kürzlich von Google eingeführt wurde. Aus der Dokumentation habe ich folgendes gefunden:
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
}
}
Die Aktivität kann wie folgt auf diese Liste zugreifen:
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
});
}
}
Meine Frage ist, ich werde dies tun:
In der
loadUsers()
Funktion rufe ich die Daten asynchron ab, wobei ich zuerst die Datenbank (Raum) auf diese Daten überprüfeWenn ich die Daten dort nicht erhalte, werde ich einen API-Aufruf durchführen, um die Daten vom Webserver abzurufen.
Ich werde die abgerufenen Daten in die Datenbank (Raum) einfügen und die Benutzeroberfläche entsprechend den Daten aktualisieren.
Was ist der empfohlene Ansatz, um dies zu tun?
Wie kann ich die Variable von dort aktualisieren, wenn ich a starte Service
, um die API über die loadUsers()
Methode aufzurufen ?MutableLiveData<List<User>> users
Service
loadUsers()
ruft im Grunde das Repo auf, um die Benutzerinformationen zu erhalten