HandlerThread实现循环请求网络并接收。

首先先定义一个主线程中用于接收的handler:本人接收到数据类型是list型
private Handler handler=new Handler(){
    @SuppressLint("HandlerLeak")
    public void handleMessage(Message msg){
        try {
            if(msg.what==1){
                List<ConstructMessage> response = (List<ConstructMessage>) msg.obj;
        
            }
     } catch (Exception e){
                e.printStackTrace();
              
      }finally {
                    sendHandlerMessageDelayed(childHandler,VariableSorting.mIntervalTime); 

            }
​​​​​​​}

创建HandlerThread:并开启一个子线程 childHandler,我们先设立一个标志消息触发子线程中的接收,然后执行里面的操作,在请求网络之后将数据发送给上面的主线程接收区。

handlerThread = new HandlerThread("ipawsBox");
            //必须先开启线程
            handlerThread.start();
            //子线程Handler
            childHandler = new Handler(handlerThread.getLooper()) {
                @Override
                public void handleMessage(Message msg1) {
                    if(msg1.what==25){
                        //在子线程中进行网络请求
                        String url=ResourceMethod.urlSplicingMinute();
                        Log.d(TAG, "Ipaws url:"+url);
                        hadata=getDateFromSever(url);
                 
   
                        Message msg = new Message();
                        msg.what=1;
                        msg.obj=hadata;
                        Log.d(TAG, "Ipaws 执行执行----");
                        handler.sendMessage(msg);
                    }

                }
            };
            Message msg = new Message();
            msg.what=25;
            msg.obj="you";
            childHandler.sendMessage(msg);
}

最后回到主线程接收区,在接收完成后面的操作后,添加finally方法并执行 sendHandlerMessageDelayed()方法发送回childHandler,重复执行操作。sendHandlerMessageDelayed方法代码如下。

private void sendHandlerMessageDelayed(Handler handler,int delay){
        if(handler==null){
            return;
        }
        handler.removeMessages(25);
        handler.sendEmptyMessageDelayed(25,delay);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

童无极

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值