Когда я использую шаблон проектирования MVP в Android, некоторые люди предлагают использовать SoftReference
для просмотра в BasePresenter.Какова цель этого пути?
Я слышал, что он может избежать возникновения ООМ, но почему?Если я использую StrongReference для 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;
}
}