Handler是Android用于线程间通信的机制,使用方法:
1,在主线程(Activity)中创建Handler对象
//在创建的时候加上static,内部类引用非静态内部类的对象会造成内存泄漏 public static Handler handler = new Handler(){ //这个回调方法,接收到子线程中发送过来的msg @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 2: Log.d("TAG",msg.toString()); break; } } };
2.开启子线程,发送消息给主线程Thread th; private void load() { th = new Thread(new Runnable() { public Message msg = handler.obtainMessage(); @Override public void run() { msg.obj = "我来自子线程"; msg.what = 2; handler.sendMessage(msg); } }); th.start(); }
3.在onDestory方法中移除线程的任务,释放内存@Override protected void onDestroy() { super.onDestroy(); handler.removeCallbacks(th); }
注意:
1.在Activity中内部实现了Looper.prepare()和Looper.loop()方法
2.创建Handler对象的时候要加static,因为Message中持有了Handler对象,当消息(message)没有取消的时候,会一直持有造成内存泄漏。
3.在onDestory中要记得释放handler。
4.对Handler对象使用弱引用
下一篇:Android中的Handler机制源码解析