BasePresenter.java 1.06 KB
package com.prws.common.base;

import java.lang.ref.WeakReference;

/**
 * @author
 *
 * 描述:BasePresenter
 */
public abstract class BasePresenter<V extends BaseView,M extends BaseModel,CONTRACT> {

    protected final String TAG = getClass().getSimpleName();

    protected M m;

    private WeakReference<V> vWeakReference;

    public BasePresenter() {
        m=getModel();
    }

    public void bindView(V v) {
        vWeakReference =new WeakReference<>(v);
    }

    public void onBindView() {
        if(vWeakReference!=null){
            vWeakReference.clear();
            vWeakReference=null;
            System.gc();
        }

    }


    public V getView() {
        if(vWeakReference!=null){
            return vWeakReference.get();
        }
        return null;
    }

    public abstract CONTRACT getContract();

    /**
     * 获取子类MODE层具体业务
     * @return
     */
    public abstract M getModel();

    /**
     * 页面销毁时取消所有网络请求
     */
    public void cancelAllRequest() {
        m.cancelAllRequest();
    }
}