Android -面向对象开发思维模式-帮助你逃离面向过程的开发的痛苦深渊

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();
    }
}

留言超过十个上传源码


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邻居出行

码农不易,相互鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值