Handler的介绍及实例
Handler类的介绍
主要作用:处理大量数据的功能放在单独一个类中
1.Handler的基本使用
Handler在使用过程中涉及到两个队列
1)线程队列
注意的方法:
a./**调用post方法,将线程对象加入到消息队列中*/
handler.post(thread);
b./**从线程队列中清除此线程对象*/
handler.removeCallbacks(thread);
c./**调用postDelayed方法,将线程对象延时加入到消息队列中*/
handler.postDelayed(thread, 2000);
2)消息队列
/**将msg对象加入到消息队列当中*/
handler.sendMessage(msg);
2.Handler与线程的关系
1)利用handler的话直接调用run方法
执行的是同一个线程,实现方法是handler.post(r);
2)利用start方法开启
执行是不同线程,实现方法必须调用start()方法开启
3)利用handler来实现线程的异步操作
用到一个重要的类叫looper:循环的从队列中取得消息的功能
实现异步的步骤:
a. 先生成一个HandlerThread对象,启动start()方法
/**生成一个HandlerThread对象,实现了使用looper对象来处理消息队列的功能*/
HandlerThread handlerThread = new HandlerThread("handler Thread");
handlerThread.start();
b.开启start()方法
handlerThread.start();
c.创建一个handler,此时的handler从handlerThread得到的参数looper
MyHandler handler = new MyHandler(handlerThread.getLooper());
3.Bundle只能以String为键,值为其他基本数据类型的特殊Map
在handler中传递消息时会使用的类型:
1)当传递小量数据
msg.arg1 int 类型
msg.arg2 int 类型
msg.obj 引用数据类型
2)当传递大量数据使用Bundle对象
绑定数据时候使用msg.setData(b)
取数据时候使用msg.getData()