前言
Android代码规范是个很模糊又很敏感的话题,有时候很多同事都很不愿意直面对这个问题,谁愿意说自己的代码很烂,其实人往往不愿意改变,就很难再进步,我就在无数次跌倒中有站起来,下面给大家讲讲在实战中几招实用的代码归类和合并,让代码更清晰方便又易于维护。
public abstract class BaseActivity extends Activity implements
HttpCallback {
public RequestParams mParams;
public Click click;
HashMap<String, String> UMENG_MAP = new HashMap<String, String>();
private Context mcontext;
protected boolean bBackGround;
public BaseApplication app;
public String mDeviceId;
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
click = new Click();
mcontext=this.getApplicationContext();
if (mParams == null)
mParams = new RequestParams();
app=(BaseApplication) getApplication();
mDeviceId =app.mDeviceId;
initView(bundle);
initLisitener();
initData(bundle);
}
}
大家上面看到了initview、initLisitener、initdata。不要小看了这三个函数,这三个函数就把所有业务层实现代码全归类,既清晰又方便,以此类推fragement、dialog都这样归类,让后面开发者都习惯和遵守这个规定。
再说第二个优化之处,事件提炼合并,在android里面事件用的比较多。如果一个点击new一个事件,代码会大大不美观、不合理、浪费开发时间。
@Override
protected void initLisitener() {
setOnClickListener(R.id.back_btn);
mListView.setXListViewListener(xListViewListener);
mListView.setOnItemClickListener(itemClick);
}
AdapterView.OnItemClickListener itemClick = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
try {
ArticleData articleData = articleEntity.list.get(position - 1);
Intent intent = new Intent(mContext, ArticleDetailActivity.class);
intent.putExtra("entity", articleData);
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
};
@Override
public void treatClickEvent(int id) {
super.treatClickEvent(id);
switch (id) {
case R.id.back_btn:
AppFinish();
break;
}
}
大家看到了initlistener中第一行代码
setOnClickListener(R.id.back_btn);
设置某个操作事件,一行代码搞定,那么监听在哪昵!就在treatclickevent函数中,这个函数里面通过所监听的id,直接执行事件处理,具体实现内部逻辑如下。
public void setOnClickListener(int id) {
if (click == null)
click = new Click();
findViewById(id).setOnClickListener(click);
}
private class Click implements OnClickListener {
@Override
public void onClick(View v) {
int id = v.getId();
treatClickEvent(id);
treatClickEvent(v);
}
}
大家看到其实很简单,上面这个优化也可以写到dialog和fragment中,希望大家能有很多这种优化、规范的建议,欢迎大家留言,谢谢。