Ostatnio odkrywam architekturę Androida, która została niedawno wprowadzona przez Google. Z dokumentacji znalazłem to:
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
}
}
działanie może uzyskać dostęp do tej listy w następujący sposób:
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
});
}
}
Moje pytanie brzmi: mam zamiar zrobić to:
w
loadUsers()
funkcji pobieram dane asynchronicznie, gdzie najpierw sprawdzę bazę danych (pokój) pod kątem tych danychJeśli nie otrzymam tam danych, wykonam wywołanie API w celu pobrania danych z serwera WWW.
Wstawię pobrane dane do bazy danych (Pokój) i zaktualizuję interfejs użytkownika zgodnie z danymi.
Jakie jest zalecane podejście, aby to zrobić?
Jeśli zacznę Service
wywoływać interfejs API z loadUsers()
metody, w jaki sposób mogę zaktualizować MutableLiveData<List<User>> users
zmienną z tego Service
?