美文网首页
Android组件化的简单探索

Android组件化的简单探索

作者: 编程的猫 | 来源:发表于2019-09-14 18:00 被阅读0次

为什么需要组件化?

在项目开发的过程中,随着版本的功能迭代,模块会越来越多,导致项目代码耦合度越来越高,逐渐难以维护。因此,组件化应运而生!

以下我只记录自己在组件化探索学习过程中的几个重要问题

组件化的问题:

  1. 组件间的页面跳转(这个网上已经有很多博文)
    2.组件间的通信,方法的相互调用(这个网上很少有文章涉及,以下也会重点讲这个)

组件间页面的相互跳转

请自行去搜索查阅

组件间方法的相互调用

项目结构

我建立的工程结构是:base库组件,它被若干个功能组件所依赖,而若干个功能分组件被APP外壳所依赖,平级的功能组件间也可能会界面相互跳转或方法间相互调用。结构如下图:


工程结构示意图.png
工程结构.png

流程
从App外壳跳转到组件finger,然后再组件finger的界面调用pw组件的方法并返回结果呈现再finger组件的界面上

1.先在baseLibrary基础库下创建文件ExecuteMethodImpl和ExecuteMethod,代码如下:

/**
 * Created By Aa
 * on 2019/9/14
 * 执行其他组件的方法
 */
public interface ExecuteMethodImpl extends IProvider {

    String executeMethod();

}

/**
 * Created By Aa
 * on 2019/9/14
 * 利用路由调用
 */
public class ExecuteMethod {

    public static String executeAimMethod() {
        ExecuteMethodImpl method = ARouter.getInstance().navigation(ExecuteMethodImpl.class);
        if (method != null) {
            String s = method.executeMethod();
            return s;
        } else {
            return "";
        }
    }
}
image.png

2.在pw组件下创建文件PwTestExecutorMethod和ExecuteDetail,代码如下:

/**
 * Created By Aa
 * on 2019/9/14
 */
@Route(path = "/pw/executeMethod")
public class PwTestExecutorMethod implements ExecuteMethodImpl {
    @Override
    public String executeMethod() {

        return ExecuteDetail.executeContent("{ 李二狗 }");
    }

    @Override
    public void init(Context context) {

    }
}

/**
 * Created By Aa
 * on 2019/9/14
 * 目标方法执行的具体内容
 */
public class ExecuteDetail {

    public static String executeContent(String params){
        return "参数:"+params+",目标方法执行后返回的结果";
    }

}
image.png

3.在组件finger的activity中调用组将pw中的目标方法,并呈现结果:

   btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(FingerActivity.this, "跨组件调用方法"
                        , Toast.LENGTH_SHORT).show();

//                params.setText(MessageFormat.format("内容:{0}",
//                        PwFactory.getUserAddress("李二狗:")));

                params.setText(ExecuteMethod.executeAimMethod());
            }
        });

依次的静态效果图如下:


app.png
finger.png
finger调用pw方法.png

开源示例项目包含组件化的配置

gitHub地址项目地址:https://github.com/15827348069/Test875App

相关文章

网友评论

      本文标题:Android组件化的简单探索

      本文链接:https://www.haomeiwen.com/subject/omsayctx.html