バックグラウンド スレッドで setValue を呼び出すことができません

質問


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

解決


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

理由

MutableLiveData は 2 つの関数 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