2013年4月25日木曜日

androidでHandlerThread,Handler,Handler.Callbackを使う

androidでネットワークプログラミングを
書くときには普通に書くとANRが発生するので
別スレッドで処理が必要。

でもこれをきれいに書く方法を知らなかったのですが
HandlerThread
Handler
Handler.Callback
を使えばきれいに書けると分かったので
そのやり方

話すよりコード出した方が早いので
以下。


public void hogehoge(){
HandlerThread handlerThread = new HandlerThread("test");
handlerThread.start();
Handler handler = new Handler(handlerThread.getLooper(), callback);

Message mes = new Message();
mes.what = 1; //数字は適当
mes.arg1 = 2; //数字は適当
handler.sendMessage(mes);
}

Handler.Callback callback = new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
switch(msg.what){
case 1:
//ネットワークの処理
break;
return true;
}
};


HandlerThread作ってlooperとコールバック渡してhandlerを作ればよい。
後はsendしてsend先で処理を書けば
割ときれいなんじゃないでしょうかね。

0 件のコメント:

コメントを投稿