use runUiDelayedIfBlock instead of runOnUiThread
introduce show and finish events