• Android Handler的一个简单使用例子

    消息队列的工作演示
    服务器君一共花费 26.044 ms 进行了 2 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    在前面 开启一个线程Thread并用进度条显示进度 这篇文章里,我们用线程实现了这么一个简单的功能,就是点击按钮,加载进度条。但是有没有发现,点击一次之后,再次点击就会没效。我们可是需要每次点击都要显示下一张图片的。

    这里就需要引入 Android 的消息机制了,简单来说,就是 Handler、Looper 还有 Message Queue的使用。这里我们用一个简单的例子来说明 Handler 的使用,就是每次点击按钮,给消息队列发送一个数字 5。还是在 PaintingActivity 里做。

    PaintingActivity :

    private Button btn_next;
    private Handler pic_hdl;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    	// TODO Auto-generated method stub
    	super.onCreate(savedInstanceState);
    	setContentView(R.layout.painting);
    	
    	btn_next = (Button)findViewById(R.id.btn_loadnext);
    	btn_next.setOnClickListener(new ButtonListener());
    	
    	pic_hdl = new PicHandler();
    }
    
    class ButtonListener implements OnClickListener{
    
    	@Override
    	public void onClick(View v) {
    		// TODO Auto-generated method stub
    		if( v.getId() == R.id.btn_loadnext){
    			Message msg = pic_hdl.obtainMessage();
    			msg.what = 4;
    			pic_hdl.sendMessage(msg);
    		}
    	}
    	
    }
    
    class PicHandler extends 	{
    
    	@Override
    	public void handleMessage(Message msg) {
    		// TODO Auto-generated method stub
    		int what = msg.what;
    		System.out.println("what: " + what);
    	}
    	
    }
    

    就这么简单就完成了。演示效果:

    简要介绍一下过程:

    1. private Handler pic_hdl; 定义一个 Handler, 而 pic_hdl = new PicHandler(); 则是从我们定义的 class PicHandler 新建一个 Handler;
    2. 然后看按钮的 onClick 事件,obtainMessage 为获取一个 msg 对象,然后给 msg.what 赋值,sendMessage 将 msg 对象发到消息队列中;
    3. 回到 PicHandler,我们在 handleMessage 可以很简单地重新获得消息队列里 what 的值。然后在 Log 里打印出来。

    接下来我们会再继续深入 Handler 这个东西。

更多 推荐条目

Welcome to NowaMagic Academy!

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

本章最新发布
随机专题
  1. [移动开发] 从代码角度去认识 Handler 4 个条目
  2. [智力开发与知识管理] 信息的类型与结构 9 个条目
  3. [PHP程序设计] 命令式编程范式 6 个条目
  4. [Python程序设计] Tornado表单处理 3 个条目
  5. [JavaScript程序设计] jQuery与表单操作 2 个条目
  6. [移动开发] Android Studio里的Gradle 3 个条目
  7. [数据库技术] 无限级分类数据表设计 4 个条目
  8. [移动开发] Activity 初步知识 2 个条目
  9. [软件工程与项目管理] 呈现树的构建 13 个条目
  10. [搜索引擎优化] 百度搜索引擎优化指南 3 个条目
  11. [移动开发] 简单了解Android Fragment 3 个条目
  12. [计算机算法] TAOCP与算法 12 个条目
窗口 -- [资讯]