package com.tejia.lijin.app.presenter;
|
|
|
import java.lang.ref.Reference;
|
import java.lang.ref.SoftReference;
|
|
/**
|
* Description: Presenter的根父类
|
*/
|
public class BasePresenter<T> {
|
//View接口类型的软引用
|
protected Reference<T> mViewRef;
|
|
/**
|
* 建立关系(绑定)
|
*
|
* @param view view对象传入
|
*/
|
public void attachView(T view) {
|
/**
|
* 使用软引用,是为了防止所持的view都销毁了,但presenter一直持有,导致内存泄漏。
|
*/
|
if (view != null) {
|
mViewRef = new SoftReference<>(view);//软引用
|
}
|
}
|
|
protected T getView() {
|
if (isViewAttached()) {
|
return mViewRef.get();
|
} else {
|
return null;
|
}
|
}
|
|
//判断view 是否销毁
|
public boolean isViewAttached() {
|
return mViewRef != null && mViewRef.get() != null;
|
}
|
|
/**
|
* 取消关联(销毁)
|
*/
|
public void detachView() {
|
if (mViewRef != null) {
|
mViewRef.clear();
|
}
|
}
|
}
|