Cannot invoke setValue on a background thread

问题


LiveData更新数据报错解决方法java.lang.IllegalStateException: Cannot invoke setValue on a background thread

解决


将setValue(T)改为postValue(T)即可。

原因

MutableLiveData提供了 postValue 和 setValue 两个函数

  • setValue(T) 必须在主线程中调用 ,
  • postValue(T) 既可以在主线程中调用, 也可以在子线程中调用 ;

public class MutableLiveData<T> extends LiveData<T> {
    @Override
    public void postValue(T value) 
    @Override
    public void setValue(T value)
}

猜你喜欢

转载自blog.csdn.net/Billy_Zuo/article/details/130269893