• 从UI Thread向Worker Thread发送消息对象

    补充线程间的数据传递
    服务器君一共花费 18.557 ms 进行了 4 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    用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();
    	}
    }
    
    1. 点击按钮 btn_refresh,创建一个 msg 对象,利用 refrsh_handler 将消息 msg 发送到消息队列中。
    2. 实例化线程 RefreshThread,RefreshThread 利用 Looper 对象从消息队列中将数据取出。

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

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [移动开发] Android属性系统Property 9 个条目
  2. [移动开发] Android View注入框架Butter Knife 3 个条目
  3. [Python程序设计] Python数据类型 11 个条目
  4. [移动开发] Android加载器Loaders 5 个条目
  5. [运维管理] 防火墙原理与应用 5 个条目
  6. [PHP程序设计] 对输入文件类型的检测 1 个条目
  7. [移动开发] Android 网络通信框架Volley 1 个条目
  8. [PHP程序设计] 命令式编程范式 6 个条目
  9. [PHP程序设计] PHP中的Hash算法 3 个条目
  10. [智力开发与知识管理] 整体性学习策略 9 个条目
  11. [移动开发] Android布局基本知识 3 个条目
  12. [JavaScript程序设计] Web实时通信技术名词解析 5 个条目
窗口 -- [资讯]