关于handler对象实例化的一系列用法:
最基本的用法
1.private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
};
如果Handler是个内部类,那 么它也会保持它所在的外部类的引用。可能会引起内存泄漏
解决此办法使用google推荐的方式2
2.private Handler mHandler2 = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
return false;
}
});
使用静态的时候注意弱引用问题
3.static Handler handler=new Handler(new WeakReference<Handler.Callback>(new Handler.Callback(){
@Override
public boolean handleMessage(Message msg) {
return false;
}
}).get());
4.让handleMessage在想要的looper中执行,Looper.getMainLooper()属于主线程的looper
Handler handler=new Handler(Looper.getMainLooper()){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
};