@Satangelus

Как проверить запущена ли процедура в основном потоке или нет?

Есть у меня одна процедурка которая при вызове не из основного потока выдает екзептион.

Сама процедура вызывает код из сдк который критичен к выполнению в основном потоке. Но по назначению и сути код может быть вызван из любого места.

Can't create handler inside thread that has not called Looper.prepare()

Помогло обертывание в runOnUiThread.

Хочется пропатчить сдк, определяя если запуск кода был не из основного потока, выдывать свой exception с нормальный описанием ситуации, чтобы другие не напоролись на те же грабли и гадали где косяк.
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Во-первых, стоит проектировать программу так, чтобы код не мог запуститься где попало. Во-вторых, можно перехватывать исключения. Наконец, проверить можно конструкцией

if (Looper.getMainLooper().isCurrentThread()) {
    // UI поток
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@red-barbarian
никак нормально)
некоторые вещи специально делаются, что бы вызываться на маин потоке.
если очень есть желание, то сделайте обвертку и назовите по другому.
возможно также, что процедурке (методу), нужен не ui- поток, а просто Looper. Тогда добавьте лупер.
Из вопроса не понятно, что нужно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы