我正在使用LiveData从服务器获取数据并进行观察。我的onChanged()方法只是在第一次调用,而在服务器中的数据更新时不会调用。
用户片段:
UserViewModel userViewModel = ViewModelProviders.of(this).get(UserViewModel.class);
userViewModel.getUser().observe(this, new Observer<User>() {
@Override
public void onChanged(User user) {
//Set UI
}
});
Run Code Online (Sandbox Code Playgroud)
UserViewModel:
public class UserViewModel extends AndroidViewModel {
private LiveData<User> user;
public UserViewModel(Application application) {
super(application);
user = UserRepository.getInstance().fetchUser();
}
public LiveData<User> getUser() {
return user;
}
}
Run Code Online (Sandbox Code Playgroud)
UserRepository:
public class UserRepository {
private ApiService apiService;
private static UserRepository userRepository;
private UserRepository() {
apiService = RestClient.getClient().create(ApiService.class);
}
public synchronized static UserRepository getInstance() {
if (userRepository == null) userRepository = …Run Code Online (Sandbox Code Playgroud) java android android-livedata android-viewmodel android-architecture-components