Обратные вызовы OkHttp выполняются в фоновом потоке, если вы используете enqueue, и показ диалога является задачей пользовательского интерфейса, для этого его необходимо запустить в потоке пользовательского интерфейса.
В вашем случае вы можете легко сделать это, запустивваш код диалога, используя runOnUiThread
.
runOnUiThread {
dialogPopUp("Error parameters", mContext ).showDialog()
}
Так же, как вы сделали в своем блоке else.Вы также можете достичь этого, используя Обработчик , созданный в потоке пользовательского интерфейса.
Обновление: При более внимательном рассмотрении вашего кода я понял, что вызапуск fetchJson
в фоновом потоке с помощью функции doAsync
.Когда вы используете enqueue
на OkHttp.Call
, вы в основном отправляете его для выполнения в фоновом потоке, поэтому нет необходимости использовать doAsync
.Если вы удалите doAsync
, вам больше не нужно будет использовать runOnUiThread
, поскольку обратный вызов будет выполняться в потоке пользовательского интерфейса.