/**
* @author Created by Lee64 on 2018/3/25.
*/
public abstract class BasePresenter<T> {
protected Reference<T> mViewReference; // View接口类型的弱引用
public void attachView(T view) {
mViewReference = new WeakReference<T>(view);
}
protected T getView() {
return mViewReference.get();
}
public boolean isViewAttached() {
return mViewReference != null && mViewReference.get() != null;
}
public void detachView() {
if (mViewReference != null) {
mViewReference.clear();
mViewReference = null;
}
}
}
/**
* @author Created by Lee64 on 2018/3/25.
*/
public abstract class MVPBaseActivity<V, T extends BasePresenter<V> > extends Activity {
protected T mPresenter; // Presenter对象
@SuppressWarnings("unchecked")
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPresenter = createPresenter();
if (mPresenter != null) {
mPresenter.attachView( (V) this);
}
}
protected abstract T createPresenter();
@Override
protected void onDestroy() {
super.onDestroy();
if (mPresenter != null) {
mPresenter.detachView();
}
}
}