diff --git a/app/src/main/java/me/jessyan/mvparms/demo/mvp/ui/holder/UserItemHolder.java b/app/src/main/java/me/jessyan/mvparms/demo/mvp/ui/holder/UserItemHolder.java index 8b7e7e50ed316fd1f1f5352b488db508d844e32d..bc8140b0beb9a7b884893272cf1d324811e99b3a 100644 --- a/app/src/main/java/me/jessyan/mvparms/demo/mvp/ui/holder/UserItemHolder.java +++ b/app/src/main/java/me/jessyan/mvparms/demo/mvp/ui/holder/UserItemHolder.java @@ -15,11 +15,13 @@ */ package me.jessyan.mvparms.demo.mvp.ui.holder; +import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.jess.arms.base.BaseHolder; +import com.jess.arms.base.DefaultAdapter; import com.jess.arms.di.component.AppComponent; import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.glide.ImageConfigImpl; @@ -70,10 +72,20 @@ public class UserItemHolder extends BaseHolder { } + /** + * 在 Activity 的 onDestroy 中使用 {@link DefaultAdapter#releaseAllHolder(RecyclerView)} 方法 (super.onDestroy() 之前) + * {@link BaseHolder#onRelease()} 才会被调用, 可以在此方法中释放一些资源 + */ @Override protected void onRelease() { + //只要传入的 Context 为 Activity, Glide 就会自己做好生命周期的管理, 其实在上面的代码中传入的 Context 就是 Activity + //所以在 onRelease 方法中不做 clear 也是可以的, 但是在这里想展示一下 clear 的用法 mImageLoader.clear(mAppComponent.application(), ImageConfigImpl.builder() .imageViews(mAvatar) .build()); + this.mAvatar = null; + this.mName = null; + this.mAppComponent = null; + this.mImageLoader = null; } } diff --git a/arms/src/main/java/com/jess/arms/base/BaseHolder.java b/arms/src/main/java/com/jess/arms/base/BaseHolder.java index 911ec94d01883500292165bb56320ee84dcdeb35..a0a2ecf4caf5d222e3282ab0d6cb69d4f7b8611b 100644 --- a/arms/src/main/java/com/jess/arms/base/BaseHolder.java +++ b/arms/src/main/java/com/jess/arms/base/BaseHolder.java @@ -52,7 +52,8 @@ public abstract class BaseHolder extends RecyclerView.ViewHolder implements V /** - * 释放资源 + * 在 Activity 的 onDestroy 中使用 {@link DefaultAdapter#releaseAllHolder(RecyclerView)} 方法 (super.onDestroy() 之前) + * {@link BaseHolder#onRelease()} 才会被调用, 可以在此方法中释放一些资源 */ protected void onRelease() {