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