Skip to content

Instantly share code, notes, and snippets.

@brucetoo
Created October 26, 2018 06:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brucetoo/4b084d1cbf0a81f9ee6491580e7ffa31 to your computer and use it in GitHub Desktop.
Save brucetoo/4b084d1cbf0a81f9ee6491580e7ffa31 to your computer and use it in GitHub Desktop.
Handler之防止任意引用泄漏
package com.brucetoo.androidnotes.tools;
import android.os.Handler;
import android.os.Message;
import java.lang.ref.WeakReference;
/**
* Created by Bruce Too
* On 2018/10/26.
* At 13:51
* Handler that prevent any reference memory leak,especially {@link android.app.Activity}
*/
public class RefHandler<T> extends Handler {
private WeakReference<T> mReferSelf;
private MessageCallback<T> mMsgCallback;
public RefHandler(T referSelf,MessageCallback<T> callback){
this.mReferSelf = new WeakReference<>(referSelf);
this.mMsgCallback = callback;
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
T refer = mReferSelf.get();
if(refer != null && mMsgCallback != null){
mMsgCallback.handleMessage(refer,msg);
}
}
public interface MessageCallback<T> {
void handleMessage(T referSelf, Message msg);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment