美文网首页
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