android之线程的使用(handler,messageQueue)

来源:互联网 发布:java基础教程视频教程 编辑:程序博客网 时间:2024/05/29 15:43
Handler允许你去处理和一个线程的消息队列相关联的Message和Runnable对象。
每一个Handler只和一个单独的线程以及那个线程的消息队列相关联。
当你创建一个Handler时,它被绑定到正在创建他的线程的消息队列和线程上面,
从这一点看,它传递消息消息和runnable到消息队列,并且执行他们当他们从
消息队列中出来时。
handler主要有两方面的用途:
1):调度消息和Runnable的执行。
2):确保一个动作在一个线程中必定会得到执行。


调度消息主要是用,post(Runnable r),postAtTime(Runnable r,Long l),
postDelayed(Runnable,Long),sendEmptyMessage(int),sendMessage(Message);
sendMessageAtTime(Message,long),还用sendMessageDelayed(Message,long).
post版本的发送方法:确保runnable在消息队列收到后会得到执行。
sendMessage版本的方法:可以携带一个bundle存储的信息由handleMessage()
处理。前提是你必须先要实现一个handler的子类并且实现handlemessage方法。




下面是使用handler的方法:
MyHandler extends Handler {         
public MyHandler(Looper looper) { 
            super(looper); 
        } 
  
        public void handleMessage(Message msg) { 
            /** 处理接收到的消息*/
        } 
    } 
  
   class UpdateRunnable implements Runnable { 
  
        public void run() { 
            Message msg = mHandler.obtainMessage(); 
            msg.what = 10000; 
            msg.sendToTarget(); 
        } 
  
    } 
  
//在需要调用的地方,加入下面代码即可 
HandlerThread handlerThread = new HandlerThread("MyHandlerThread"); 
handlerThread.start(); 
mHandler = new MyHandler(handlerThread.getLooper()); 
//add to MessageQueue 
mHandler.post(new UpdateRunnable());























原创粉丝点击