Vollyの引用によりメモリが漏洩した.

1087 ワード

Vollyのアイテムを使うと、leakcanaryは基本的にActivityがVollyのinterface referenceの情報を表示します.
WeakReferenceを使って、この問題を解決しました.
private static class SListener implements Response.Listener {
    private final WeakReference activityWeakReference;
    private final WeakReference callbackWeakReference;

    public SListener(Activity activity, VolleyCallback callback) {
        activityWeakReference = new WeakReference(activity);
        callbackWeakReference = new WeakReference(callback);
    }

    @Override
    public void onResponse(JSONObject jsonObject) {
        Activity act = activityWeakReference.get();
        VolleyCallback vc = callbackWeakReference.get();
        if (act != null && vc != null) {
            LogUtil.d(TAG, act.toString() + "   " + jsonObject.toString());
            something you need to do;
            vc.onSuccess(jsonObject);
        }
    }
actとcalBackはすでにWeakReferenceという形でVollyフレームに導入されています.