Я пытаюсь постоянно прослушивать новые сообщения в сокете, и мне нужно обновлять свой интерфейс при получении новых данных. Приложение выдает ошибку при попытке доступа к представлениям, потому что я думаю, что я запускаю функцию в контексте фонового потока.
Можно ли заставить это работать с обратными вызовами?
fun updateUI(msg:String) {
when (msg) {
"2D Sketch" -> {
group.removeAllViews()
layoutInflater.inflate(R.layout.sketch_tools, group, true)
}
"Part" -> {
group.removeAllViews()
layoutInflater.inflate(R.layout.part_tools, group, true)
}
else -> {
}
}
}
val listener = thread {
while(true){
val input = DataInputStream(BufferedInputStream(SocketHandler.socket.getInputStream()))
val bytes = ByteArray(1024)
input.read(bytes)
val msg = bytes.toString(Charsets.UTF_8).replace("\u0000", "")
updateUI(msg)
}
}