Android: чтение из View не из UI-треда

Как везде пишут, не следует трогать UI-объекты не из UI-треда. С изменениями понятно, это сложный процесс и если влезть в него параллельно, можно всё сломать. Но как насчёт чтения свойств?

Например, нужно отследить, что пользователь домотал до конца большого списка, а ставить обработчик на scroll, чтобы он вызывался по десять раз в секунду в UI-треде излишне. Можно сделать так:

val th = thread(start=true) {
    var inProcess = true
    while (inProcess) {
        if (scrollView.scrollY > limit) {
            // congratulations!
            inProcess = false
        } else {
            Thread.sleep(2000)
        }
    }
}

В фоне смотрим раз в пару секунд на положение скрола. Никаких ошибок не замечено. С другой стороны, вряд ли проверка попадала на момент изменения скрола.

В исходниках смотрю, это просто отдача свойства:

protected int mScrollY;

@InspectableProperty
public final int getScrollY() {
    return mScrollY;
}

Могут ли быть в этом и подобных случаях какие-либо подводные камни?


Ответы (0 шт):