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 件のコメント:
コメントを投稿