Android MVP模式的优化 - chuwuwang/ReadingNote GitHub Wiki

/**
 * @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();
        }
    }

}
⚠️ **GitHub.com Fallback** ⚠️