use runOnUiThread instead of Handler, a simpler way