【Android 组件化】路由组件 ( 路由框架概述 )

简介: 【Android 组件化】路由组件 ( 路由框架概述 )

文章目录

一、路由框架概述

二、路由框架整体流程

三、博客资源



组件化系列博客 :


【Android 组件化】从模块化到组件化

【Android 组件化】使用 Gradle 实现组件化 ( Gradle 变量定义与使用 )

【Android 组件化】使用 Gradle 实现组件化 ( 组件模式与集成模式切换 )

【Android 组件化】使用 Gradle 实现组件化 ( 组件 / 集成模式下的 Library Module 开发 )

【Android 组件化】路由组件 ( 路由组件结构 )

【Android 组件化】路由组件 ( 注解处理器获取被注解的节点 )

【Android 组件化】路由组件 ( 注解处理器中使用 JavaPoet 生成代码 )

【Android 组件化】路由组件 ( 注解处理器参数选项设置 )

【Android 组件化】路由组件 ( 构造路由表中的路由信息 )

【Android 组件化】路由组件 ( 使用 JavaPoet 生成路由表类 )

【Android 组件化】路由组件 ( 组件间共享的服务 )

【Android 组件化】路由组件 ( 生成 Root 类记录模块中的路由表 )

【Android 组件化】路由组件 ( 运行时获取 注解处理器 生成的路由表 )

【Android 组件化】路由组件 ( 路由框架概述 )





一、路由框架概述


路由框架 仅限于在 集成模式 下使用 , 组件模式下 , 路由框架不起任何作用 ;


在组件模式时 , 由于没有直接引用其它模块的类 , 独立运行时 , 也可以单独编译运行 ;



完整的组件化项目 ,


有一个主应用 , 和若干 Library 依赖库 ,


主应用 需要 依赖这些 Library 依赖库 ;



Library 依赖库之间需要有通信功能 , 有以下几种解决方案 : ① AIDL , ② 广播 BroadcastReceiver , ③ EventBus ;


AIDL 需要编写注册 Service 服务 , 并将服务进行绑定 ;

BroadcastReceiver 广播接收者 , 需要编写并注册 , 还需要发送广播 ;

EventBus 每个方法都要定义 Bean , 维护成本很高 ;



使用 路由框架 , 只要在想要暴露出去的类上使用 @Route 注解 , 就将该类暴露出去了 ,


在另外一个模块中 , 可以直接通过路由地址 , 获取并使用 @Route 注解暴露出来的类 ;






二、路由框架整体流程


定义 编译时注解 :


package kim.hsl.router_annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.CLASS)
public @interface Route {
    /**
     * 路由路径, 标识一个路由节点
     * 该字段没有默认值, 必须设置
     * @return
     */
    String path();
    /**
     * 路由分组, 默认为空, 选择性设置
     * 路由节点可以按照分组进行加载
     * @return
     */
    String group() default "";
}


使用编译时注解 :


@Route(path = "/app/MainActivity")
public class MainActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}


注解处理器 在编译时 , 自动生成如下 路由表 类 , 下面的类对应的是 app 路由分组对应的路由表 , 用于管理 路由表中的 路由节点 ;


package kim.hsl.router;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
import kim.hsl.component.MainActivity;
import kim.hsl.route_core.template.IRouteGroup;
import kim.hsl.router_annotation.model.RouteBean;
public class Router_Group_app implements IRouteGroup {
  @Override
  public void loadInto(Map<String, RouteBean> atlas) {
    atlas.put("app", new RouteBean(RouteBean.Type.ACTIVITY, MainActivity.class, "/app/MainActivity", "app"));
  }
}


生成的路由表需要进行管理 , 一个 Module 模块生成一个总 Root 表 , 用于管理该 Module 模块的 路由分组 ;


package kim.hsl.router;
import java.lang.Class;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
import kim.hsl.route_core.template.IRouteGroup;
import kim.hsl.route_core.template.IRouteRoot;
public class Router_Root_app implements IRouteRoot {
  @Override
  public void loadInto(Map<String, Class<? extends IRouteGroup>> routes) {
    routes.put("app", Router_Group_app.class);
  }
}



使用 路由框架 时 , 首先要初始化路由表信息 , 在 Application 中调用 Router 的 init 方法 , 通过调用 注解处理器 编译时 生成的 路由分组表 , Root 表 , 获取路由信息 ;


具体如何在 运行时 获取路由表 , 参考 【Android 组件化】路由组件 ( 运行时获取 注解处理器 生成的路由表 ) 博客 ;



给定 一个路由地址 , 先去查找 Root 表 , 根据 路由地址 " /app/MainActivity " 中的分组信息 " app " , 查找 " app " 对应的路由表 Router_Group_app.class ;


然后获取 路由表 Router_Group_app.class 中的 " /app/MainActivity " 地址对应的 路由节点信息 " new RouteBean(RouteBean.Type.ACTIVITY, MainActivity.class, “/app/MainActivity”, “app”) " , 该路由地址对应 MainActivity.class 路由节点 , 是 Activity 类型的节点 ;






三、博客资源


博客源码 :


GitHub : https://github.com/han1202012/Component

CSDN 下载 :




目录
相关文章
|
2月前
|
设计模式 Android开发
[Android 四大组件] --- BroadcastReceiver
[Android 四大组件] --- BroadcastReceiver
33 0
|
3月前
|
Android开发 开发者
什么是Android Jetpack,它包括哪些组件?
什么是Android Jetpack,它包括哪些组件?
39 0
|
4月前
|
数据库 Android开发
Android Studio开发之应用组件Application的讲解及实战(附源码,通过图书管理信息系统实战)
Android Studio开发之应用组件Application的讲解及实战(附源码,通过图书管理信息系统实战)
47 0
|
4月前
|
XML Java Android开发
Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信)
Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信)
72 0
|
6月前
|
Java Android开发 开发者
1024程序节|Android框架之一 BRVAH【BaseRecyclerViewAdapterHelper】使用demo
BRVAH是一个强大的RecyclerAdapter框架(什么是RecyclerView?),它能节约开发者大量的开发时间,集成了大部分列表常用需求解决方案。为什么会有它?请查看「Android开源框架BRVAH由来篇」该框架于2016年4月10号发布的第1个版本到现在已经一年多了,经历了800多次代码提交,140多次版本打包,修复了1000多个问题,获得了9000多star,非常感谢大家的使用以及反馈。
137 0
|
2月前
|
数据可视化 Android开发
[Android 四大组件] --- Service
[Android 四大组件] --- Service
24 0
|
2月前
|
Android开发
[Android 四大组件] --- Activity
[Android 四大组件] --- Activity
22 1
|
2月前
|
存储 数据库 Android开发
安卓四大组件是什么?
安卓四大组件是什么?
|
3月前
|
数据库 Android开发 开发者
Android基础知识:什么是Android应用的四大组件?
Android基础知识:什么是Android应用的四大组件?
59 1
|
4月前
|
缓存 JSON Android开发
[Android]网络框架之OkHttp(详细)(kotlin)
[Android]网络框架之OkHttp(详细)(kotlin)
138 0