MPAndroidChart - LineDataSet.addEntry создает исключение UnsupportedOperationException (в фоновой сопрограмме Kotlin) - PullRequest
0 голосов
/ 28 августа 2018

В чем может быть проблема? Должно ли оно быть вызвано из потока пользовательского интерфейса? Или реальная нить вместо сопрограммы? Кстати, сообщение об исключении пустое.

Сопрограмма для получения данных и добавления их в набор данных:

launch(threadP) {
    for (n in channel) {
        if (dataSet.entryCount > 1000)
            dataSet.removeFirst()
        val cnt = dataCnt.incrementAndGet()
        try {
            dataSet.addEntry(Entry(cnt.toFloat(), n.toFloat()))
            //dataSet.notifyDataSetChanged()
        } catch (e: Throwable) {
            Log.wtf("LISTENING", e.javaClass.simpleName)
        }
    }
}

Сопрограмма для обновления LineChart:

import kotlinx.coroutines.experimental.android.UI as AUI

...

launch(AUI) {
    while (true) {
        //dataSet.notifyDataSetChanged()
        try {
            chart.notifyDataSetChanged()
            chart.invalidate()
        } catch (e: Throwable) {
            Log.wtf("REFRESH", e.javaClass.simpleName)
        }
        delay(1000)
    }
}
...