利用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();
}
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) { }
}
3 子模块通过ARouter获取这个ISkillImpl的实例化对象
ISkill impl=ARouter.getInstance().build("/app/ISkillImpl").navigation();
impl.eat();
利用ARouter实现组件间通信,解决子模块调用主模块问题的更多相关文章
- 【Vue】利用父子组件间通信实现一个场景
组件间通信是组件开发的,我们既希望组件的独立性,数据能互不干扰,又不可避免组件间会有联系和交互. 在vue中,父子组件的关系可以总结为props down,events up: 在vue2.0中废弃了 ...
- Vue的父子组件间通信及借助$emit和$on解除父子级通信的耦合度高的问题
1.父子级间通信,父类找子类非常容易,直接在子组件上加一个ref,父组件直接通过this.$refs操作子组件的数据和方法 父 这边子组件中 就完成了父 => 子组件通信 2. 子 =&g ...
- vue组件间通信六种方式(完整版)
本文总结了vue组件间通信的几种方式,如props. $emit/ $on.vuex. $parent / $children. $attrs/ $listeners和provide/inject,以 ...
- Vue组件间通信6种方式
摘要: 总有一款合适的通信方式. 作者:浪里行舟 Fundebug经授权转载,版权归原作者所有. 前言 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的 ...
- React中组件间通信的方式
React中组件间通信的方式 React中组件间通信包括父子组件.兄弟组件.隔代组件.非嵌套组件之间通信. Props props适用于父子组件的通信,props以单向数据流的形式可以很好的完成父子组 ...
- Vuex状态管理——任意组件间通信
核心概念 在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信. 每一个 Vuex 应用的 ...
- React独立组件间通信联动
React是现在主流的高效的前端框架,其官方文档 http://reactjs.cn/react/docs/getting-started.html 在介绍组件间通信时只给出了父子组件间通信的方法,而 ...
- React 精要面试题讲解(二) 组件间通信详解
单向数据流与组件间通信 上文我们已经讲述过,react 单向数据流的原理和简单模拟实现.结合上文中的代码,我们来进行这节面试题的讲解: react中的组件间通信. 那么,首先我们把看上文中的原生js代 ...
- [转] React 中组件间通信的几种方式
在使用 React 的过程中,不可避免的需要组件间进行消息传递(通信),组件间通信大体有下面几种情况: 父组件向子组件通信 子组件向父组件通信 跨级组件之间通信 非嵌套组件间通信 下面依次说下这几种通 ...
随机推荐
- ES6 变量的结构赋值用途(实用技巧)
1.交换变量的值 let x=1; let y=2; [x,y]=[y,x];//x=2,y=1 2.从函数返回多个值 函数只能返回一个值,如果要返回多个值,只能将它们放在数组或者对象里返回,有了解构 ...
- 用公共key实现无密码ssh
1.在主服务器master下生成密钥 $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 2.将密钥放在 ~/.ssh/authorized_keys $ cat ~ ...
- 如何将浏览器上的JS文件屏蔽
在学习自定验证时,需要在页面上进行调试运行结果,这时的JS会影响运行结果的显示,所以我们会将JS代码屏蔽掉,那么我们该如何做呢? 第一步: 在浏览器地址栏输入about:config 点击“我保证会 ...
- leetcode 118. Pascal's Triangle 、119. Pascal's Triangle II 、120. Triangle
118. Pascal's Triangle 第一种解法:比较麻烦 https://leetcode.com/problems/pascals-triangle/discuss/166279/cpp- ...
- FragmentFactory
import android.support.v4.app.Fragment; import java.util.HashMap; public class FragmentFactory { pri ...
- 谈谈 Android 的优点和不足之处?
优点:1.开放性,开源,免费,可定制2.挣脱运营商束缚3.丰富的硬件选择4.不受任何限制的开发商5.无缝结合的 Google 应用缺点:1.安全问题.隐私问题2.同质化严重3.运营商对 Android ...
- web开发(九) 使用javamail进行发送邮件,(使用QQ,163,新浪邮箱服务器)
在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6506027.html>,在此仅供学习参考之用. 一.发送 ...
- Python 的列表生成器
列表生成器为创建列表提供了一种简洁的方式. 比如说,我们可以这样实现一个平方数列表 squares=[x**2 for x in range(10)] 或者这样迭代一个字符串来生成列表 >> ...
- java:struts框架(网路静态U盘项目)
1.网络静态U盘项目: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYP ...
- Windos下navcat连接虚拟机中的mysql
进入mysql命令行, 使用root用户,密码:youpassword(你的root密码)连接到mysql服务器: # mysql -u root -proot mysql>GRANT ALL ...