You don't need the `isPositionsChanged` test here, it's performed in the UI thread inside `runPositionsUpdateInUiThread`. Anyway, at this point it's a race condition, since this code is not synchronized.