Как проверить запущена ли процедура в основном потоке или нет?
Есть у меня одна процедурка которая при вызове не из основного потока выдает екзептион.
Сама процедура вызывает код из сдк который критичен к выполнению в основном потоке. Но по назначению и сути код может быть вызван из любого места.
Can't create handler inside thread that has not called Looper.prepare()
Помогло обертывание в runOnUiThread.
Хочется пропатчить сдк, определяя если запуск кода был не из основного потока, выдывать свой exception с нормальный описанием ситуации, чтобы другие не напоролись на те же грабли и гадали где косяк.
Во-первых, стоит проектировать программу так, чтобы код не мог запуститься где попало. Во-вторых, можно перехватывать исключения. Наконец, проверить можно конструкцией
if (Looper.getMainLooper().isCurrentThread()) {
// UI поток
}
никак нормально)
некоторые вещи специально делаются, что бы вызываться на маин потоке.
если очень есть желание, то сделайте обвертку и назовите по другому.
возможно также, что процедурке (методу), нужен не ui- поток, а просто Looper. Тогда добавьте лупер.
Из вопроса не понятно, что нужно.