Ответ
Для вызова метода на главном потоке в Android можно использовать:
- Handler с Looper.getMainLooper()
new Handler(Looper.getMainLooper()).post(() -> {
// Код выполнится на главном потоке
});
- View.post() (если есть доступ к View)
view.post(() -> {
// Код выполнится на главном потоке
});
- Activity.runOnUiThread()
activity.runOnUiThread(() -> {
// Код выполнится на главном потоке
});
- RxJava
Observable.just(1)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(/* обработка на UI */);
- Kotlin Coroutines
CoroutineScope(Dispatchers.Main).launch {
// Код выполнится на главном потоке
}
Все методы гарантируют выполнение на главном потоке, но имеют разный контекст использования. Handler - универсальный, View.post() удобен при работе с View, runOnUiThread требует Activity.