worker服务器推送消息,从UI Thread向Worker Thread发送消息对象

在 用Handler实现线程间的消息通信 这个实例中,我们在 Worker Thread 中将消息发送到主线程里,然后修改 UI。其实标题起得不是那么对…… 因为我们还需要一种需求,就是在 UI Thread 将消息发送到 Worker Thread,两者结合起来才叫做“线程间的消息通信”。而且这种需求也很普遍,比如我们在首页的图片列表中,点击刷新,或者下来刷新什么的,就可能需要从 UI Thread 中发送消息给 Worker Thread,然后 Worker Thread 去检查服务器,看有没有内容更新,有就更新,没有就阻塞。

那么现在我们就来做这么一个最简单的小例子来说明吧:

private Button btn_refresh;

private Handler refrsh_handler;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

btn_refresh = (Button)findViewById(R.id.btn_refresh);

btn_refresh.setOnClickListener(new OnClickListener(){

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Message msg = refrsh_handler.obtainMessage();

refrsh_handler.sendMessage(msg);

}

});

RefreshThread rt = new RefreshThread();

rt.start();

}

class RefreshThread extends Thread{

@Override

public void run(){

Looper.prepare();

refrsh_handler = new Handler(){

@Override

public void handleMessage(Message msg){

System.out.println("接收到来自主线程的消息了。");

}

};

Looper.loop();

}

}

点击按钮 btn_refresh,创建一个 msg 对象,利用 refrsh_handler 将消息 msg 发送到消息队列中。

实例化线程 RefreshThread,RefreshThread 利用 Looper 对象从消息队列中将数据取出。

很简单的过程。程序运行结果如下:

b56dc776274a45cf4c85899058ffbbaa.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值