Android中Handler弱引用工具類
阿新 • • 發佈:2018-12-17
經常會用到Handler,我們也清楚它會記憶體洩露,如果再View中使用,很難做到onDestroy( )中removeAllCallback(null),索性寫個工具類,但是我在專案中使用時候,發現有被GC的風險。
/**
* Created by ibalde.Wang on 2018/10/25 12:10
*/
public class HandlerUtils {
private HandlerUtils() {
throw new UnsupportedOperationException("Guy, r u crazy? u can NOT instantiate me..." );
}
public static class HandlerHolder extends Handler {
WeakReference<OnReceiveMessageListener> mListenerWeakReference;
/**
* 使用必讀:推薦在Activity或者Activity內部持有類中實現該介面,不要使用匿名類,可能會被GC
*
* @param listener 收到訊息回撥介面
*/
public HandlerHolder (OnReceiveMessageListener listener) {
mListenerWeakReference = new WeakReference<>(listener);
}
@Override
public void handleMessage(Message msg) {
if (mListenerWeakReference != null && mListenerWeakReference.get() != null) {
mListenerWeakReference. get().handlerMessage(msg);
}
}
}
/**
* 收到訊息回撥介面
*/
public interface OnReceiveMessageListener {
void handlerMessage(Message msg);
}
}