利用ARouter实现组件间通信,解决子模块调用主模块问题

2019-06-13 11:32:33

传送门 利用ARouter实现组件间通信,解决子模块调用主模块问题

一年之前我写过一篇组件间通信的博客Android模块间通信(不使用三方库),当时用的是反射,自己去维护一套“对应关系”(分别给每个模块命名,分别给每个类命名帮助反射找到对应的类),我的这种映射关系就是属于强映射(必须人力注明),阿里巴巴的ARouter就通过注解的方式实现了软映射(你只需要把两个需要对应的类加上注解,其他的维护不用你麻烦)


如果你还没使用过ARouter请你按照这篇下面博客尝试使用下然后再往下看组件通信的内容(不然的话可能会懵逼)Android Studio接入ARouter以及简单使用


如果你使用过ARouter请继续往下看:


1 子模块定义一个与主模块通信的接口 ISkill继承自IProvider

2 主模块定义一个ISkill实现类ISkillImpl

3 子模块通过ARouter+反射去获取这个ISkillImpl的实例化对象

4 通过3的实例化对象进行通信


理论是无聊的,接下来让我们看代码


1 子模块中定义一个与主模块通信的接口 ISkill继承自IProvider


public interface ISkill extends IProvider {

    public void eat();

}

1

2

3

2 主模块定义一个ISkill实现类ISkillImpl,注意加上注解!!


@Route(path = "/app/ISkillImpl")

public class ISkillImpl implements ISkill {


    @Override

    public void eat() {

        Log.i("TAG", "大王叫我来巡山!");

    }


    @Override

    public void init(Context context) {


    }

}

1

2

3

4

5

6

7

8

9

10

11

12

13

3,4 子模块通过ARouter获取这个ISkillImpl的实例化对象


  ISkill impl=ARouter.getInstance().build("/app/ISkillImpl").navigation();

  impl.eat();


  • 2021-01-22 21:56:48

    emcc生成wasm,wast,bc文件的方法

    Emscripten实现把C/C++文件转成wasm,wast(wasm的可读形式),llvm字节码(bc格式),ll格式(llvm字节码的可读形式)的步骤。

  • 2021-01-22 21:59:34

    emcc编译与部分重要参数选取

    C/C++代码通过emcc编译为字节码,然后根据不同的目标编译为asm.js或wasm。emcc和gcc编译选项类似,例如-s OPTIONS=VALUE、-O等。另外为了适应Web环境,emcc增加了一些特有的选项,如–pre-js 、–post-js 等。

  • 2021-01-22 22:01:19

    Emscripten Compiler Frontend (emcc)

    The Emscripten Compiler Frontend (emcc) is used to call the Emscripten compiler from the command line. It is effectively a drop-in replacement for a standard compiler like gcc or clang.

  • 2021-01-22 22:21:41

    emcc编译命令介绍

    这个输入文件file,既可以是clang可以编译的C/C++语言,也可以是二进制形式的llvm bitcode或者人类可读形式的llvm assembly文件。

  • 2021-01-22 22:25:51

    How to protect your JS code by WebAssembly

    对于iOS或是Android来说,我们可以将相关的算法通过C/C++进行编写,然后编译为dylib或是so并进行混淆以此来增加破解的复杂度,但是对于前端来说,并没有类似的技术可以使用。当然,自从asm.js及WebAssembly的全面推进后,我们可以使用其进一步增强我们核心代码的安全性,但由于asm.js以及WebAssembly标准的开放,其安全强度也并非想象中的那么美好。

  • 2021-01-24 09:50:16

    UICollectionViewCell cell高度自适应

    本来想使用UICollectionView来作为整体的布局,并且不再使用UITableView,但是发现高度不固定的布局,UICollectionView没啥优势呀,至少我没找到好的方法,从网上看的是,要自定义cell,并且继承preferredLayoutAttributesFittingAttributes