BaseActivity 对基础功能进行抽取
BaseFragment对Fragment 基础功能进行抽取
BaseMvpActivity封装mvp的逻辑
BaseMvpFragment 对mvp基础功能进行抽取
BaseActivity
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayout());
initView();
initData();
}
protected void initView() {
}
protected abstract void initData();
protected abstract int getLayout();
}
BaseMvpActivity
/**
* 此基类 主要处理MVP的逻辑
*/
public abstract class BaseMvpActivity<P extends IBasePresenter> extends BaseActivity {
protected P presenter;
@Override
protected void initView() {
super.initView();
presenter =initPresenter();
if (presenter!=null){
presenter.attachView(this);
}
}
protected abstract P initPresenter();
@Override
protected void onDestroy() {
super.onDestroy();
// 解绑view,避免内存泄漏
if (presenter!=null){
presenter.detachView();
}
}
}
BaseFragment
public abstract class BaseFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View root = inflater.inflate(getLayout(), null);
initView(root);
initData();
return root;
}
protected abstract void initData();
protected abstract void initView(View root);
protected abstract int getLayout();
}
BaseMvpFragment
public abstract class BaseMvpFragment<P extends IBasePresenter> extends BaseFragment {
protected P presenter;
@Override
protected void initView(View root) {
presenter= initPresenter();
if (presenter!=null){
presenter.attachView(this);
}
}
protected abstract P initPresenter();
@Override
public void onDestroy() {
super.onDestroy();
if (presenter!=null){
presenter.detachView();
}
}
}