当前位置: 首页 > news >正文

个人网站做接口可以么/端口扫描站长工具

个人网站做接口可以么,端口扫描站长工具,抖音小程序注册,免费游戏源码网上一篇文章,讲解了路由框架实现的原理,并实现了基本的路由框架 页面路由的跳转 Android组件化专题 - 路由框架原理。 本篇文章来对基础的路由框架进阶,来实现模块间的业务通信功能。 代码地址 我们来看以下实现的效果图: app --&g…

上一篇文章,讲解了路由框架实现的原理,并实现了基本的路由框架 页面路由的跳转 Android组件化专题 - 路由框架原理。

本篇文章来对基础的路由框架进阶,来实现模块间的业务通信功能。

代码地址

我们来看以下实现的效果图:

app --> module1module1 --> module2

首先我们先回顾,路由框架的设计思路,如下图:

  1. 通过注解 Activity 类,注解处理器处理注解(APT)动态生成路由信息。
  2. 收集路由:通过定义的包名,找到所有动态生成的类,将路由信息存储到本地仓库 (rootMap).
  3. 页面跳转:根据注解的路由地址,从本地仓库中找到相关的路由信息,获取到要跳转的类,然后实现跳转。

路由框架的实现思路很容易理解,建议手撸一遍,基本掌握这种实现思路。

模块间的业务通信

如何在路由框架的基础上扩展模块间的业务通信呢?

看下图设计思路:

只要弄懂了路由框架的原理,模块间的业务通信就很容易实现了。

我们继续在上一遍文章的代码扩展。

  1. 修改primrouter-compiler 包中的 RouterProcessor 类 在之前只有Activity类的基础上,加上一个Service类型
//获得Activity的类型TypeElement activity = elementUtils.getTypeElement(Consts.Activity);//获取Service的类型TypeElement service = elementUtils.getTypeElement(Consts.Service);
//只能指定的类上面使用if (typeUtils.isSubtype(typeMirror, activity.asType())) {//存储路由相关的信息routerMeta = new RouterMeta(RouterMeta.Type.ACTIVITY, annotation, element);} else if (typeUtils.isSubtype(typeMirror, service.asType())) {//存储路由相关的信息routerMeta = new RouterMeta(RouterMeta.Type.SERVICE, annotation, element);} else {throw new RuntimeException("Just Support Activity Router!");}
复制代码

Service 类是在primrouter-core 核心库中的一个接口类

public static final String Service = "com.primrouter_core.interfaces.IService";
复制代码

这个空接口,就是为了实现业务间的通信

public interface IService {
}复制代码
  1. 修改primrouter-core 库中的PrimRouter 类

在生成跳卡的方法中扩展如下代码,实际上就是将IService 的具体实现存到JumpCard 中去。

private void produceJumpCard(JumpCard card){if{........} else {//设置要跳转的类card.setDestination(routerMeta.getDestination());//设置要跳转的类型card.setType(routerMeta.getType());switch (routerMeta.getType()) {case SERVICE:Class<?> destination = routerMeta.getDestination();IService iService = Depository.serviceMap.get(destination);if (iService == null) {iService = (IService) destination.getConstructor().newInstance();Depository.serviceMap.put(destination, iService);}card.setService(iService);break;default:break;}}
}
复制代码

然后直接返回IService 转换成 IService 的子类。

 public Object navigation(Context context, final JumpCard jumpCard, final int requestCode, Object o1) {..............................
case SERVICE:Log.e(TAG, "navigation: " + jumpCard.getService());return jumpCard.getService();}
复制代码
  1. 修改base库,base 库是所有模块都必须引入的基础库

extends IService

public interface TestService extends IService {void test(Context context,String s);}
复制代码

然后哪个模块需要TestService业务逻辑,就实现具体的TestService,并注解@Router(path),

app:

@Router(path = "/app/service")
public class AppService implements TestService {@Overridepublic void test(Context context, String s) {Toast.makeText(context, "我是app,我是被:" + s + "模块调用的,模块间通信测试成功", Toast.LENGTH_SHORT).show();}
}
复制代码

module1:

@Router(path = "/module1/service")
public class Module1Service implements TestService {private static final String TAG = "Module1Service";@Overridepublic void test(Context context, String s) {Toast.makeText(context, "我是Module1,我是被:" + s + "模块调用的,模块测试通信成功", Toast.LENGTH_SHORT).show();}
}
复制代码

module2:

@Router(path = "/module2/service")
public class Module2Service implements TestService {@Overridepublic void test(Context context, String s) {Toast.makeText(context, "我是Module2,我是被:" + s + "模块调用的,模块测试通信成功", Toast.LENGTH_SHORT).show();}
}
复制代码

调用方式: 可以在任意模块调用

TestService testService = (TestService) PrimRouter.getInstance().jump("/module1/service").navigation();
testService.test(this, "app");
复制代码

运行效果如下图所示:

Android的组件化专题: 组件化配置

APT实战

路由框架原理

模块间的业务通信

下一篇:Activity跳转参数自动注入和Fragment的跳转。

http://www.jmfq.cn/news/5279095.html

相关文章:

  • 富阳做网站公司/抖音运营推广策划方案
  • 做淘宝券推广的网站有哪些/电商网站搭建
  • 肥城网站网站建设/重庆百度快照优化
  • 青岛网站制作工作室/销售
  • 个人网站花多少钱/杭州疫情最新情况
  • 2016网站设计欣赏/拼多多代运营收费标准
  • 网站建设公司销售前景/chatgpt网址
  • 蚂蚁搬家公司官方网站/网站怎样才能在百度被搜索到
  • 石家庄百度关键词搜索/百度关键词seo推广
  • 西安教育类网站建设公司/职业培训机构排名
  • 成品网站灬源码1688/上海百度
  • 重庆市城乡建设和管理委员会网站/搜百度盘
  • 安全的政府网站建设提供商/2023近期舆情热点事件
  • 快速做网站的方法/seo评测论坛
  • 网站的ftp地址是什么/自媒体怎么入门
  • seo 新老网站替换 域名不变/属于b2b的网站有哪些
  • 建设网站架构服务器需要多少钱/长沙做网站推广公司咨询
  • 陶然亭网站建设/百度公司电话
  • PHP网站开发项目式教程/全网推广哪家正宗可靠
  • 长沙事业单位招聘信息网/站长之家seo
  • 芜湖网站建设全包仅需800元/下载安装百度一下
  • 什么网站能通过做任务赚钱吗/瑞金网络推广
  • 柳城网站建设/百度引擎的搜索方式是什么
  • 福州市建设局职改办门户网站/湖口网站建设
  • 企业网站管理系统演示平台/百度大全下载
  • 网站建设主要包括/抖音推广佣金平台
  • 天津 响应式网站设计/友情链接交换网址大全
  • 济南建设网站公司/广告公司名字
  • 网站自助建设平台有哪些/百度培训
  • 兰州网站seo收费/唐山seo