android项目重构之mvp

一直想用mvp架构写个项目,但是一直没有机会,最近项目上事情比较少,就看了看自己之前写的代码,发现项目虽然小,但是代码看起来很混乱,耦合性太高,于是产生了重构项目的念头。
在网上找了一些资料,再看了google官方的mvp架构demo之后,我开始了重构之旅。
众所周知,mvp分别就是model、view 、presenter ,model就是数据模型,view就是界面显示,而presenter就是view和model交互的中介。
google官方的demo通过contract接口把view和presenter的接口写到了一起,这样更方便项目的维护。
不多说,上代码,由于mvp的架构每个页面都差不多,这里就以项目里的login页面为例吧。
原本的代码是这样的:
public class LoginActivity extends BaseActivity 
implements View.OnClickListener, CompoundButton.OnCheckedChangeListener {
。。。省略一部分绑定view代码

    private boolean isAgree = true;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        initView();
        initEvent();
    }

    /**
     * 事件处理
     */
    private void initEvent() {
       设置点击事件的逻辑,省略。。。
    }

    private void initView() {
        ButterKnife.bind(this);
       。。。。这里主要是一些页面初始化的逻辑
        Intent intent = getIntent();
        boolean haveUpdate = intent.getBooleanExtra(Constants.HAVE_UPDATE, false);
        // 判断是否需要更新
        if (haveUpdate) {
            String versionName = SharePreferenceUtils.getString(UIUtils.getContext(), UserConfig.versionName);
            if (!TextUtils.isEmpty(versionName)) {
                // 显示更新对话框
                showUpdateDialog();
            }
        }

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.tv_agree_protocol:
                // 跳转到webview
                Intent intent = new Intent(this, WebViewActivity.class);
                intent.putExtra(Constants.TITLE, getString(R.string.qtz_protocol));
                startActivity(intent);
                break;
            case R.id.btn_login:
                login();
                break;
            case R.id.tv_login_bottom:
                registerFromPc();
                break;
        }
    }

    /**
     * 访问网络注册帐号
     */
    private void registerFromPc() {
        Intent intent = new Intent();
        intent.setAction("android.intent.action.VIEW");
        Uri content_url = Uri.parse(getString(R.string.register_from_net));
        intent.setData(content_url);
        startActivity(intent);
    }

    /**
     * 登录的逻辑
     */
    private void login() {</span><span style="font-size: 18px;">
</span><span style="font-size:14px;">//     <span style="font-family: Arial, Helvetica, sans-serif;">1.</span><span style="font-family: Arial, Helvetica, sans-serif;&
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值