相关疑难解决方法(0)

数据更改时LiveData不更新

我正在使用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

4
推荐指数
1
解决办法
2540
查看次数