Handler.handleMessage

Handler.handleMessageでスレッドからメッセージを受け取る。

Handler  |  Android Developers

非同期処理後に、UIを変更したりしたいが、ワーカースレッドが直接UIスレッドに触れることはできないので、ワーカースレッドからHandlerにメッセージを投げて、それを受け取ったらUIを変更するようにする。

Buttonを設置。

Threadを継承したCustomThreadを定義。
コンストラクタでハンドラを受け取り、10秒の重い処理を経て、Messageを生成し、mHandler.sendMessageで投げる。

ボタンが押されたら、Handler.handleMessageの定義に、button1.setTextで"Pushed!"をセットするように書いておく。
あとは、このHandlerをCustomThreadにセットしてstart。

Button1を押す
Button1を押す

Button1を押す。
10秒経ったら、

Button1のテキストも替わり、Toastも出る。
Button1のテキストも替わり、Toastも出る。

Button1のテキストも替わり、Toastも出る。

Sample/android/Handler/handleMessage/src/Handler at master · bg1bgst333/Sample · GitHub