分类: Android平台
2013-07-15 15:56:44
步骤:
1. 申请一个Handler对象
Handler handler = new Handler();
2. 创建一个线程
{继承Thread类或者实现Runnable这个接口}
使用Runnable创建一个内部匿名类对象updateThread(要复写run方法)
3. 使用handler的post方法将线程加入到线程队列中
handler.post(updateThread);
4. 使用handler的removeCallbacks方法移出updateThread线程
注意:如果线程从线程队列中出来被执行后,则队列中就不在有线程
因此如果线程在被执行后没有方法将其再次加入到队列中,则无需使用removeCallbacks
线程走出线程队列有两种情况:
一种是被执行,此时要执行run方法
一种是使用removeCallbacks方法,此时线程不被执行,因此不调用run
5. 使用handler的postDelayed方法延时将线程加入到队列中
handler.postDelayed(updateThread,3000)
下面给出一个简单的代码:
点击(此处)折叠或打开
点击(此处)折叠或打开
注意:用post方法将线程对象放到队列里面执行,并没有开启一个新的线程,而是直接调用线程
对象的run方法,因此并没有实现线程的异步。
解决的办法是先生成一个HandlerThread对象,启动它(start)
使用handlerThread对象的getLooper方法取得其looper对象,注意在此之前必须要start,否则这个
looper是空的
并将looper对象作为参数传递给handler对象,使得这个handler对象绑定到这个Looper所在线程上面
此时需要重写handler类的构造函数,将looper对象传给父类
Looper:类,提供一种循环的从队列当中取得消息的功能,不要自己创建
这样,这个handler就可以循环的从Message消息队列中不断取消息。
下面使用这个办法的代码:
点击(此处)折叠或打开