Нещодавно я досліджую архітектуру Android, яку нещодавно представив Google. З документації я знайшов це:
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
}
}
діяльність може отримати доступ до цього списку наступним чином:
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
});
}
}
Моє питання полягає в тому, що я збираюся зробити це:
у
loadUsers()
функції я отримую дані асинхронно, де я спочатку перевірю базу даних (Кімната) на ці даніЯкщо я не отримаю даних там, я здійсню виклик API для отримання даних з веб-сервера.
Я вставлю отримані дані в базу даних (Кімната) та оновлюю інтерфейс відповідно до даних.
Який рекомендований підхід для цього?
Якщо я починаю Service
викликати API із loadUsers()
методу, як я можу оновити MutableLiveData<List<User>> users
змінну з цього Service
?