Недавно я изучаю архитектуру 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()
я асинхронноloadUsers()
данные, где сначала проверяю базу данных (Room) на эти данные -
Если я не получу данные там, я сделаю вызов API для получения данных с веб-сервера.
-
Я вставлю извлеченные данные в базу данных (Комната) и обновлю интерфейс в соответствии с данными.
Каков рекомендуемый подход для этого?
Если я запускаю Service
для вызова API из loadUsers()
, как я могу обновить переменную MutableLiveData<List<User>> users
из этой Service
?