2022 Sep. 23.
参照先
AACのLiveDataのsetValueとpostValueの違いについて - log.atsumo
android — MutableLiveDataのsetValue()とpostValue()の違い
setValueはメインスレッドでのみ利用可能。
postValueはメインスレッド以外のスレッドで利用可能。
下記コードでpostValueを使うと失敗する。
class MyViewModel: ViewModel() { private var localInt = 0 // LiveData変数を作成 private val _myInt = MutableLiveData<Int>(1) val myInt: LiveData<Int> get() = _myInt fun tmpFun() { _myInt.postValue(11) } fun wait_addXtimes(times: Int, sec:Long) { for (i in 1..times) { try { Thread.sleep(sec * 1000) } catch (e: InterruptedException) { } // _myInt.postValue(++localInt) <- NG _myInt.value = ++localInt } } }