静态内部Handler类 如此处理会不会有内存溢出

本文介绍了一个BaseActivity抽象类的设计,该类使用了静态内部Handler类并利用弱引用避免内存泄漏。文章强调了如何在子类中正确重写handlerNetRequest方法以处理网络请求结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


public abstract class  BaseActivity extends Activity {
/*
 * 处理网络请求结果
 */
public abstract void handlerNetRequest(final BaseActivity activity, final Message msg);

//创建静态Handler内部类 以避免内存泄漏
protected  static class MyHandler extends Handler {
//用弱引用保存activit引用
protected final WeakReference<BaseActivity> mActivity;
//用于同步
protected final String syncObj = new String();

public MyHandler(BaseActivity activity) {
mActivity = new WeakReference<BaseActivity>(activity);
}
}

protected final MyHandler handler = new MyHandler(this){
  @Override
    public void handleMessage(Message msg) {
     super.handleMessage(msg);
     BaseActivity activity = mActivity.get();
     if(activity != null) {
handlerNetRequest(activity, msg);
     }
    }
};

}

在BaseActivity的子类中重写handlerNetRequest方法,这个方法会造成子类内存溢出不

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值