首页 > 代码库 > Handle的使用

Handle的使用

Handle

用于异步消息处理,发送消息后消息进入队列,然后发送消息函数即可返回,其他函数再逐个取出消息进行处理,也即接收消息与发送消息不是同步进行。


基本使用方法(异步消息处理机制)

(1)创建一个Handle对象

(2)将要执行的操作写在线程对象(runnable)的run方法当中(用匿名内部类实现);在run方法内部,执行postDelayed或者post方法

(3)调用Handle的post方法,将要执行的线程对象添加到队列当中

(线程:实现Runnable接口的run方法)


例程:

public class HandlerActivity extends Activity {

	private Button startButton = null;
	private Button endButton = null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		startButton = (Button)findViewById(R.id.startButton);
		startButton.setOnClickListener(new StartButtonListener());
		endButton = (Button)findViewById(R.id.endButton);
		endButton.setOnClickListener(new EndButtonListener());
	}
	
	class StartButtonListener implements OnClickListener{
		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			//调用Handle的post方法,将要执行的线程对象添加到队列当中
			handler.post(updataThread);
			
		}
	}
	
	class EndButtonListener implements OnClickListener{
		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			handler.removeCallbacks(updataThread);
			
		}
	}
	//创建一个Handle对象
	Handler handler = new Handler();
	//将要执行的操作写在线程对象(runnable)的run方法当中(用匿名内部类实现)
	Runnable updataThread = new Runnable(){
		public void run() {
			System.out.println("UpdataThread");
			//在run方法内部,执行postDelayed或者post方法
			handler.postDelayed(updataThread, 3000);
		}
	};


}


Handle的使用