Есть несколько способов:
Вы уже упомянули первый способ:
activity.runOnUniThread(Runnable runnable);
Вы также можете использовать следующий метод:
view.post(Runnable runnable);
или:
view.postDelayed(Runnable runnable, int delay);
Пример:
textView.post(r -> {
Log.e("Activity" ,"Text");
});
Просто напишите свой код в исполняемый файл. Вы даже можете задать его заранее:
Runnable r = new Runnable(r -> {
// make your stuff
});
// ...
button.post(r);
Последний вариант: Обработчик
Handler handler = new Handler();
// You know the scheme :
handler.post(r);
// or
handler.postDelayed(r, 1000);