Меня просто смущает идея ViewModel, когда у вас есть данные, загружаемые асинхронно.
Вот пример ViewModel
public class UsersViewModel extends ViewModel {
private List<User> userList;
public List<User> getUserList() {
if (userList == null) {
usersList = loadUsers();
}
return userList;
}
private List<User> loadUsers() {
// This is async task
}
}
Activity:
public class UsersActivity extends AppCompatActivity {
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
UsersViewModel usersViewModel =
ViewModelProviders.of(this).get(UsersViewModel.class);
showUsers(usersViewModel.getUserList());
}
}
Это покажет пустой список (или, возможно, сбой при нулевом), так как асинхронная задача не была выполнена.Все примеры, которые я видел в Интернете, были синхронно блокирующими вызовами.Но как насчет случаев, когда это асинхронный вызов, который получает данные с сервера и обновляет пользовательский интерфейс в результате.Как мы справимся с этим?