1. 程式人生 > >Android中Handler弱引用工具類

Android中Handler弱引用工具類

經常會用到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); } }