Android开发-帮助你逃离面向过程的开发的痛苦深渊
写这个博客是为了一下三个原因
1,刚开始学编程时自己很茫然,基本语法都会就是感觉无从下手开发一个项目,很想希望有一个有经验的的人来指导一下! 我希望能帮助那些遇到和我曾经有相似困惑的同学们!
2,之前在网上看到了很多写的好的博客帮助我解决了好多的问题,现在我也想写点东东希望为大家提供点帮助!
3,我经历了好几家公司发现他们的代码都还是停留在一个面向过程的开发,提出点建议还不被理睬(新来的到公司没有话语权,可能有的公司会好点)!为了生活也只能忍着!
- 数据解析UI交互分离
- 内部指令通信传值
- 业务模块划分
- 技术更换UI逻辑不受影响*
代码块
/**
* Created by Rendy
* 16/9/5
* Todo 网络接口处理
*/
public interface CommonListener {
int Action_1 = 0X1001;
int Action_2 = 0X1002;
int Action_3 = 0X1003;
int Action_4 = 0X1004;
int Action_5 = 0X1005;
int Action_6 = 0X1006;
int Action_7 = 0X1007;
int Action_8 = 0X1008;
int Action_9 = 0X1009;
/**
* @param url
* @param values 请求参数键值 对出现 key~value
*/
void getURL(int action, String url, String... values);
/**
* @param url
* @param values 请求参数键值 对出现 key~value
*/
void postURL(int action, String url, String... values);
/**
* When the request starts.
*
* @param what the credit of the incoming request is used to distinguish between multiple requests.
*/
void onStart(int what);
/**
* @param what
* @param object server back data
*/
void onSuccessed(int what, JSONObject object);
void onSuccess(int what, JSONObject object);
/**
*
* @param what
* 请求指令
* @param object
* 返回值
*/
void onSuccessDiy(int what, JSONObject object);
/**
* @param what
* @param value 业务请求失败
*/
void onFailed(int what, String value);
/**
* @param what 网络异常
*/
void onException(int what);
/**
* @param what request finished;
*/
void onFinish(int what);
}
/**
* @author Rendy
* 界面 base
*
*/
public abstract class BaseActivity extends FragmentActivity implements OnClickListener, CommonListener, InsideUpdate.UpdateNotify {
private LoadingDialog mLoadDlg;
public int mWindowWidth;
@Override
protected void onCreate(Bundle savedInstanceState) {
onBefore();
super.onCreate(savedInstanceState);
AtyManager.getInstance().pushActivity(this);
InsideUpdate.addClientNotify(this);
mWindowWidth = getWindowManager().getDefaultDisplay().getWidth();
setContentView();
findViewById();
}
protected abstract void onBefore();
public abstract void setContentView();
public abstract void findViewById();
@Override
public void onClick(View v) {
}
@Override
public void updateUi(int action, Object... value) {
}
/**
* 展示loading弹窗
*/
public void showLoadingDialog() {
if (mLoadDlg == null) {
mLoadDlg = new LoadingDialog(this, R.style.LoadingDialog, "请等待……");
mLoadDlg.setCanceledOnTouchOutside(true);
mLoadDlg.setCancelable(true);
}
mLoadDlg.show();
}
/**
* 隐藏加载信息 dialog
*/
public void hideLodingDialog() {
if (mLoadDlg != null)
mLoadDlg.dismiss();
}
@Override
protected void onResume() {
super.onResume();
StatService.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
StatService.onPause(this);
}
@Override
protected void onDestroy() {
hideLodingDialog();
super.onDestroy();
InsideUpdate.removeClientNotify(this);
AtyManager.getInstance().popActivity(this);
}
public <T extends View> T getView(int viewId) {
View view = findViewById(viewId);
return (T) view;
}
public <T extends View> T iniClickView(int viewId) {
View view = findViewById(viewId);
view.setOnClickListener(this);
return (T) view;
}
public void iniClickView(int... viewId) {
for (int i = 0; i < viewId.length; i++) {
findViewById(viewId[i]).setOnClickListener(this);
}
}
public TextView iniTextView(int viewId, String value) {
TextView view = (TextView) findViewById(viewId);
view.setText(value);
return view;
}
@Override
public void getURL(int action, String url, String... values) {
onStart(action);
LogUtil.ShowParams("URL:", url);
SendUtil.get(action, url, ApiUtil.getParams(values), this);
}
@Override
public void postURL(int action, String url, String... values) {
onStart(action);
LogUtil.ShowParams("URL:", url);
SendUtil.post(action, url, ApiUtil.getParams(values), this);
}
@Override
public void onStart(int what) {
}
public void onSuccessDiy(int what, JSONObject object) {
}
@Override
public void onSuccess(int what, JSONObject object) {
}
@Override
public void onBackPressed() {
super.onBackPressed();
}
@Override
public void onSuccessed(int what, JSONObject object) {
// 当前activity 不在ui 线程
if (isFinishing() == true ||!Util.isOnMainThread())
return;
try {
// 非统一标准JSON格式 不作处理
if (object.optJSONObject(BaseUrl.RESULT) == null || object.optJSONObject(BaseUrl.RESULT).opt(BaseUrl.RESULT) == null) {
LogUtil.Show("非统一标准JSON格式 不作处理");
return;
}
String result = object.getJSONObject(BaseUrl.RESULT).getString(BaseUrl.RESULT);
if (result != null && "1".equals(result)) {
onSuccess(what, object);
} else {
String messge = object.getJSONObject(BaseUrl.RESULT).getString(BaseUrl.MESSAGE);
onFailed(what, messge);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onFailed(int what, String value) {
ToastUtil.showCustomToast(getApplicationContext(), value);
}
@Override
public void onException(int what) {
ToastUtil.showCustomToast(getApplicationContext(), getResources().getString(R.string.network_err));
}
@Override
public void onFinish(int what) {
hideLodingDialog();
}
}
留言超过十个上传源码