在MVP设计模式中,对Presenter中的View使用softReference的目的是什么?

时间:2019-05-20 04:03:29

标签: java android reference

当我在Android中使用MVP设计模式时,有人建议对SoftReference使用BasePresenter中的View。这种方式的确切目的是什么?

我听说它可以避免发生OOM,但是为什么呢?如果我将StrongReference用于View,则在执行Activity的onDestroy()方法时将View设置为null,这不一样吗?

据我所知,Activity将被破坏,onDestroy()方法将被执行。不是吗

1。使用SoftReference:

    public abstract class BasePresenter<T>{

       private SoftReference<T> mSoftView;

       public void attachView(T view) {
           mSoftView = new SoftReference<>(view);
       }

       public void detachView() {
           if (mSoftView != null){
               mSoftView.clear();
               mSoftView = null;
           }
       }

       protected T getView(){
           return mSoftView.get();
       }
}

2。使用StrongReference:

    public abstract class BasePresenter<T>{

       private T mView;

       public void attachView(T view) {
          mView = view;
       }

       public void detachView() {
          mView = null;
       }

       protected T getView(){
          return mView;
       }
    }

0 个答案:

没有答案