package com.mygeopay.wallet.util; import android.os.Handler; import android.os.Message; import android.support.v4.app.Fragment; import java.lang.ref.WeakReference; /** * @author John L. Jegutanis */ public abstract class WeakHandler<T> extends Handler { private final WeakReference<T> reference; public WeakHandler(T ref) { this.reference = new WeakReference<T>(ref); } @Override public void handleMessage(Message msg) { T ref = reference.get(); if (ref != null) { // Do not call if is a detached fragment if (ref instanceof Fragment) { Fragment f = (Fragment) ref; if (f.isRemoving() || f.isDetached() || f.getActivity() == null) return; } weakHandleMessage(ref, msg); } } protected abstract void weakHandleMessage(T ref, Message msg); }