ハンドラ

handler.png

イベントが起きた時の処理を予め書いておくメソッドがイベントハンドラメソッドです。

JavaのHandler

Handlerクラスのインスタンスのpostメソッドで指定したRunnableクラスのコードは、 Handlerクラスのインスタンスの属するスレッドで実行される
本当に違うスレッドで動くの?と疑っているならば、Thread.currentThread().getName()でスレッドの名前を出力して確認してみよう。

   別スレッドで動く関数(){
       Log.d("Thread","この関数スレッドの名前"+Thread.currentThread().getName());
handler.post(new Runnable() {//しかし、この中だけは特別にhandlerをnewしたスレッド上で動く
                @Override
                public void run() {
                    Log.d("Thread","Handler.postによるスレッドの名前"+Thread.currentThread().getName());
                    tv.setText("別スレッドよりGUIにアクセスします。");
                }
            });
}

便利ですねー

+ java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
HandlerをUIスレッド以外からnewするとこのエラーになる


multithread thread

サポートサイト Wikidot.com multithreadthread