Невозможно вызвать setValue в фоновом потоке

Может кто-нибудь сказать мне, что я делаю не так

private fun getTorrentsSocketIO() {
    coroutineScope.launch {
        try {
            val socket = IO.socket("...")
            socket.on("torrents") {
                val jsonString = it.toList() as List<Torrent>
                _torrents.value = jsonString
            }
            socket.connect()
        } catch (t: Throwable) {
            Log.i("LIST_VIEW_MODEL", t.message.toString())
        }
    }
}

Ошибка возникает при вызове следующего

_torrents.value = jsonString

person Gregor A    schedule 16.09.2020    source источник


Ответы (1)


Вам следует использовать postValue.

SetValue не будет работать для фоновых процессов.

Информация

Этот метод (setValue) должен вызываться из основного потока. Если вам нужно установить значение из фонового потока, вы можете использовать postValue (Object)

person snorlax    schedule 16.09.2020
comment
Где я использую setValue? - person Gregor A; 16.09.2020
comment
Спасибо. Теперь я получаю java.lang.String не может быть преобразован в com.example.torrentula.network.Torrent - person Gregor A; 16.09.2020