package com.wangdaye.mysplash.common.utils.widget; import android.os.Handler; import android.os.Message; import java.lang.ref.WeakReference; /** * Safe handler. * * A handler that can not be static. * * */ public class SafeHandler<T extends SafeHandler.HandlerContainer> extends Handler { private WeakReference<T> mRef; public SafeHandler(T obj) { mRef = new WeakReference<>(obj); } public T getContainer() { return mRef.get(); } @Override public void handleMessage(android.os.Message msg) { super.handleMessage(msg); HandlerContainer container = getContainer(); if (container != null) { container.handleMessage(msg); } } // interface. // handler container. public interface HandlerContainer { void handleMessage(Message message); } }