/** * Author:DoctorWei * Time:2018/12/4 20:34 * Description: * email:1348172474@qq.com */ 1.定义BaseView回调接口 public interface BaseView { }
2.定义IBasePresenter业务回调
public interface IBasePresenter <V extends BaseView>{ }
3.定义BasePresenter业务回调
public class BasePresenter<V extends BaseView> implements IBasePresenter<V> { private WeakReference<V> weakView; private V baseView; public void attachView(V baseView){ this.weakView=new WeakReference<V>(baseView); } public void dettachView(){ if (this.weakView!=null){ this.weakView.clear(); this.weakView=null; } } public V getView(){ return baseView; } /** * 用于检查View是否为空对象 */ public boolean isAttachView(){ return this.weakView!=null&&this.weakView.get()!=null; } } 4.定义BaseActivity将Presenter和View进行绑定 public abstract class BaseActivity<V extends BaseView,P extends BasePresenter> extends SupportActivity implements BaseView{ public static final String TAG=BaseActivity.class.getSimpleName(); public P mPresenter; @Override public void onCreate( Bundle savedInstanceState) { super.onCreate(savedInstanceState); Logger.d(TAG,"onCreate"); setContentView(getLayoutId()); initView(); initPresenter(); initData(savedInstanceState); } protected void initPresenter() { mPresenter=createPresenter(); if (mPresenter!=null){ mPresenter.attachView(this); } } protected void hasViewAndPresenter(ExcutePresenter<P> excutePresenter){ boolean hasViewAndPresenter = mPresenter != null && mPresenter.isAttachView(); if (hasViewAndPresenter){ excutePresenter.excute(mPresenter); }else{ Logger.d("mvp未绑定"); } } public interface ExcutePresenter<P>{ void excute(P presenter); } protected P getPresenter() { return mPresenter; } protected V getView() { return (V)this; } protected abstract P createPresenter(); protected abstract void initData(Bundle savedInstanceState); protected abstract void initView(); protected abstract int getLayoutId(); //写一个全局的跳转 public void openActivityWithIntent(@NonNull Class activity,@NonNull Bundle bundle){ Intent intent=new Intent(this,activity); if (bundle!=null) { intent.putExtras(bundle); } startActivity(intent); } public Bundle getIntentBundle(){ Bundle bundle = getIntent().getExtras(); return bundle; } /** * 打印Activity的生命周期 */ @Override protected void onRestart() { super.onRestart(); Logger.d(TAG,"onRestart"); } @Override protected void onResume() { super.onResume(); Logger.d(TAG,"onResume"); } @Override protected void onPause() { super.onPause(); Logger.d(TAG,"onPause"); } @Override protected void onDestroy() { super.onDestroy(); Logger.d(TAG,"onDestroy"); if (mPresenter!=null){ mPresenter.dettachView(); } } }