当我在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;
}
}