MVP、基类的库


先创建一个库:

    new一个module,选择Android Library,命名。


接着就可以直接在库里写mvp,然后引入到别的模块中使用并可以反复使用


其中的方法根据自身情况而定

接口:

model:


public interface IBaseModel {

    void serverFail(String msg);

}


presenter:


public interface IBasePresenter {

}


view:


public interface IBaseView {
    void showLoading();
    void hideLoading();


    void serverFail(String msg);

}


Base方法


BaseModel:


public class BaseModel implements IBaseModel {
    @Override
    public void serverFail(String msg) {


    }

}


Base Presenter:


public class BasePresenter<M extends BaseModel,V extends IBaseView> implements IBasePresenter {


    public M model;
    public V view;


    /**
     * 绑定view和model
     * @param m
     * @param v
     */
    public  void attch(M m,V v){
        this.model = m;
        this.view = v;
    }




    /**
     * 回收资源,解绑,避免内存泄漏
     */
    public void detach(){
        this.model = null;
        this.view = null;
    }


}


BaseView就是Activity。




基类Activity

public abstract class BaseActivity<P extends BasePresenter> extends AppCompatActivity implements IBaseView{


    public P presenter;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(bindLayoutId());
        initView();
        presenter = initPresenter();
        if (presenter!=null){
            presenter.attch(initModel(),this);
        }


    }


    /**
     * 初始化子类model
     * @return
     */
    protected abstract BaseModel initModel();


    /**
     * 初始化view
     */
    protected abstract void initView();


    /**
     * 让子类初始化p
     * @return
     */
    protected abstract P initPresenter();


    /**
     * 绑定资源
     * @return
     */
    protected abstract int bindLayoutId();


    @Override
    public void showLoading() {


    }


    @Override
    public void hideLoading() {


    }


    @Override
    public void serverFail(String msg) {


    }




    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (presenter!=null){
            presenter.detach();
        }
    }
}














猜你喜欢

转载自blog.csdn.net/melect/article/details/80725701