抽取基类
Presenter基类
public class BasePresenter<V> {
// V 相当于V的接口
public V view;
/**
* Presenter 持有View 的接口
* @param v
*/
public void attach(V v){
this.view = v ;
}
/**
* Presenter 释放持有View的接口, 防止内存泄漏
*/
public void detach(){
this.view = null;
}
Activity基类
public abstract class BaseMvpActivity<V,T extends BasePresenter<V>> extends Activity {
// class BaseMvpActivity<LoginView,LoginPresenter extends BasePresneter<LoginView>> extends Activity {
public T t;
public abstract T initPresenter();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
t = initPresenter();
}
@Override
protected void onResume() {
super.onResume();
t.attach((V) this);
}
@Override
protected void onDestroy() {
super.onDestroy();
t.detach();
}
}
主Activity
public class LoginActivity extends BaseMvpActivity<LoginView,LoginPresenter> implements LoginView {
@Override
public LoginPresenter initPresenter() {
return new LoginPresenter();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login2);
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
t.login("muhanxi","password");
}
});
}
@Override
public void success(Bean bean) {
System.out.println("ok" + bean.toString());
}
@Override
public void failure() {
}
}