android baseactivity 网络封装,Android 架构设计-BaseActivity设计(待更新)

BaseActivity 存在的意义

定义子类的行为,成为一个模板告诉你的子类责任是什么

将子类要用的东西封装好,给子类调用,避免重复代码

限制其项目组的代码规范,统一风格

统一UI

1.定义子类的行为,成为一个模板告诉你的子类责任是什么

一、Activity的行为

接受上个Activity传过来的值

填充布局

初始化View

初始化数据,连接网络拉取json

在Oncreate里面使用四个抽象方法

/**

* 填充布局

* @param savedInstanceState

*/

protected abstract void InflateLayout(Bundle savedInstanceState);

/**

* 初始化Intent传过来的值

*/

protected abstract void initVariable();

/**

* 初始化View

*/

protected abstract void initView();

/**

* 初始化ViewData

*/

protected abstract void initData();

2.将子类要用的东西封装好,给子类调用,避免重复代码

子类要用mContext mActivity

Oncreate启动的时候要在堆栈添加,在finish的时候remove

跳转Activity,带参数的跳转

ShowToast();

一、子类要用mContext mActivity

/**

* 代替this

*/

protected Activity mActivity;

/**

* 代替Context

*/

private Context mContext;

mActivity=BaseActivity.this;

mContext=BaseActivity.this;

二、Oncreate启动的时候要在堆栈添加,在finish的时候remove

BaseAppManager.getInstance().addActivity(this);

@Override

public void finish() {

super.finish();

BaseAppManager.getInstance().removeActivity(this);

}

三、跳转Activity,带参数的跳转

/**

* startActivity

*

* @param clazz

*/

protected void readyGo(Class> clazz) {

Intent intent = new Intent(this, clazz);

startActivity(intent);

}

/**

* startActivity with bundle

*

* @param clazz

* @param bundle

*/

protected void readyGo(Class> clazz, Bundle bundle) {

Intent intent = new Intent(this, clazz);

if (null != bundle) {

intent.putExtras(bundle);

}

startActivity(intent);

}

/**

* startActivity then finish

*

* @param clazz

*/

protected void readyGoThenKill(Class> clazz) {

Intent intent = new Intent(this, clazz);

startActivity(intent);

finish();

}

/**

* startActivity with bundle then finish

*

* @param clazz

* @param bundle

*/

protected void readyGoThenKill(Class> clazz, Bundle bundle) {

Intent intent = new Intent(this, clazz);

if (null != bundle) {

intent.putExtras(bundle);

}

startActivity(intent);

finish();

}

/**

* startActivityForResult

*

* @param clazz

* @param requestCode

*/

protected void readyGoForResult(Class> clazz, int requestCode) {

Intent intent = new Intent(this, clazz);

startActivityForResult(intent, requestCode);

}

/**

* startActivityForResult with bundle

*

* @param clazz

* @param requestCode

* @param bundle

*/

protected void readyGoForResult(Class> clazz, int requestCode, Bundle bundle) {

Intent intent = new Intent(this, clazz);

if (null != bundle) {

intent.putExtras(bundle);

}

startActivityForResult(intent, requestCode);

}

四、 ShowToast();

/**

* show toast

*

* @param msg

*/

protected void showToast(View v, String msg) {

//防止遮盖虚拟按键

if (null != msg && !TextUtils.isEmpty(msg)) {

Snackbar.make(v, msg, Snackbar.LENGTH_SHORT).show();

}

}

3. 限制其项目组的代码规范,统一风格

父类实现点击事件,通过抽象方法统一在Onclick里面处理 然后提供抽象方法让自己实现

/**

* @param v

* 点击事件的初始化

*/

protected abstract void initClick(View v);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值