Это код с проблемами:
object MainThreadPoster : Handler(Looper.getMainLooper()) {
fun postRunnableAtFixRate(runnable: Runnable, token: Any, delay: Long, period: Long) {
postAtTime(object : Runnable {
override fun run() {
runnable.run()
}
}, token, SystemClock.uptimeMillis() + delay)
}
}
MainThreadPoster инициализируется с помощью mainLooper, поэтому ожидается, что запускаемая функция (в методе postRunnableAtFixRate) будет выполняться в главном потоке, но проблема в том, что когда-нибудь выполняемая функция может быть выполнена в HandlerThread.
Это ожидаемая трассировка стека
![This is the expected stack trace](https://i.stack.imgur.com/iXBHU.png)
Это трассировка стека с проблемой
![This is the stack trace with problem](https://i.stack.imgur.com/clsqL.png)