Handler.handleMessageでスレッドからメッセージを受け取る。
非同期処理後に、UIを変更したりしたいが、ワーカースレッドが直接UIスレッドに触れることはできないので、ワーカースレッドからHandlerにメッセージを投げて、それを受け取ったらUIを変更するようにする。
Buttonを設置。
Threadを継承したCustomThreadを定義。
コンストラクタでハンドラを受け取り、10秒の重い処理を経て、Messageを生成し、mHandler.sendMessageで投げる。
ボタンが押されたら、Handler.handleMessageの定義に、button1.setTextで"Pushed!"をセットするように書いておく。
あとは、このHandlerをCustomThreadにセットしてstart。
Button1を押す。
10秒経ったら、
Button1のテキストも替わり、Toastも出る。
Sample/android/Handler/handleMessage/src/Handler at master · bg1bgst333/Sample · GitHub