Android 消息处理机制: Handler 中 sendMessage()方法的几种重载方法

  1. 使用Handler中的sendEmptyMessage(int what)方式来发送消息.
    点击按钮发送消息,在Handler中做消息的处理。只发送一个带有what属性的消息。
case R.id.button1:  
    new Thread(new Runnable() {  
        // 查看Handler的api,它有几种sendMessage()的方式  
        @Override  
        public void run() {  
            // 使用public final boolean sendEmptyMessage (int what)  
            mHandler.sendEmptyMessage(3);  
        }  
    }).start();  
    break;

2.使用Handler中的sendEmptyMessageAtTime(int what,long uptimeMillis)方式来发送消息.

case R.id.button1:  
    new Thread(new Runnable() {  
        // 查看Handler的api,它有几种sendMessage()的方式  
        @Override  
        public void run() {  
            // 使用public final boolean sendEmptyMessageAtTime (int what, long uptimeMillis)  
            mHandler.sendEmptyMessageAtTime(3, 1000);  

        }  
    }).start();  
    break; 

3.使用Handler中的sendEmptyMessageDelayed (int what, long delayMillis)方式来发送消息.

case R.id.button1:  
    new Thread(new Runnable() {  
        @Override  
        public void run() {  
            /* 
             * 使用public final boolean sendEmptyMessageDelayed (int what, long delayMillis) 
             * 发送带有what属性值的消息,在延时3秒钟后发送 
             */  
            mHandler.sendEmptyMessageDelayed(3, 3000);    
        }  
    }).start();  
    break; 

4.使用Handler中的sendMessage (Message msg)方式来发送消息.

case R.id.button1:  
    new Thread(new Runnable() {  
        // 查看Handler的api,它有几种sendMessage()的方式  
        @Override  
        public void run() {  
            /* 
             * 使用public final boolean sendMessage (Message msg) 
             */  
            // 使用Message.obtain()获取message对象  
            // Message msg = Message.obtain();   

            // 使用Handler获取message对象,两种获取都可以  
            Message msg = mHandler.obtainMessage();   
            msg.arg1 = 1;  
            msg.what = 3;  
            msg.obj = "AHuier";  
            mHandler.sendMessage(msg);  
        }  
    }).start();  
    break; 

结合上面分析的内容,我们可以知道android 中发送消息不管是Message中的几种重载的obtain()方式,还是Handler中的几种重载的sendMessage最终都是通过Handler.sendMessage来发送的,而Handler中的几种sendMessage()重载方法最终都会调用到sendMessageAtTime()方法来完成消息的入队操作。

转载地址:http://blog.csdn.net/ahuier/article/details/17013647

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页