日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

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

發布時間:2025/6/17 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 组件化】路由组件 ( 路由组件结构 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、路由組件原理
  • 二、路由組件基本組成
  • 三、自定義注解模塊
  • 四、注解處理器模塊
  • 五、博客資源





一、路由組件原理



在之前博客 【Android 組件化】使用 Gradle 實現組件化 ( 組件 / 集成模式下的 Library Module 開發 ) 的組件化項目中 , 可能涉及到跨 Module 的調用 , 如在 library1 模塊中打開 library2 模塊中的 Activity 界面 , 或調用其它 Module 中的功能 ;

這就需要 library1 Module 中依賴 library2 Module , 但是如果 在 library2 中還要使用 library1 中的功能 , 就無法引用 library1 了 , 否則就會造成循環引用 , 編譯直接報錯 ;


方法 111 : 可以選擇使用 隱式 Intent , 在清單文件中 , 為組件設置 action 等意圖過濾器 ;

方法 222 : 這里介紹一種更好的架構方式 , 引入 " 路由模塊 " , 所有的 Library Module 依賴庫模塊 和 Application Module 殼應用 都依賴 " 路由模塊 " ;

借助 " 路由模塊 " , 可以 使用一個路由地址 , 隨意調用任意 Module 中的任意功能 , 如 : 跳轉到其它 Module 的 Activity 頁面 ;


111 個 Activity 中如果要使用路由模塊 , 先初始化路由模塊 , 如果需要頁面跳轉時 , 傳入 " 路由地址 ", 跳轉到對應界面 , " 路由地址 " 是在對應的 Activity 類上使用注解設定的 ;


在 " 路由模塊 " 中 , 維護了多個分組 , 每個分組維護一張 路由表 , 其中 包含了需要調用的 Activity , Service 等組件信息 , 每個組件都有一個路由地址與之對應 , 路由地址通過類注解進行設置 ;

分組的個數可以根據項目需求進行分割 , 如果項目特別大 , 產生的路由表就很大 , 每次調用都要加載整個路由表 , 通過分組拆分需要管理的路由表 , 可以根據具體的需求 , 選擇對應的路由表進行加載 ;





二、路由組件基本組成



路由模塊 實現時 , 需要使用注解 , 通過注解 , 生成對應 Java 類文件 , 該 Java 文件就是對應的 路由表 ;

這種涉及注解以及生成 Java 文件的功能 , 一般分為 333 個模塊進行實現 ;

  • 模塊 111 : 自定義注解模塊 , 在該模塊下包含所有自定義注解 ; ( Java 工程 )
  • 模塊 222 : 注解處理器模塊 , 用于生成 Java 類文件模塊 ; ( Java 工程 )
  • 模塊 333 : 項目中引用的依賴庫模塊 , Android 的 Library Module 依賴庫 , 供其它 Android Module 調用的接口 ; ( Android Library 工程 )

ButterKnife , Dagger2 , EventBus 等注解框架 , 都是用到了編譯時技術 APT ;





三、自定義注解模塊



" 自定義注解模塊 " 是 Java 工程 ;

在 自定義注解模塊 中 , 自定義了注解 , 自定義注解需要傳入一個 字符串 路由路徑 , 用于 標識一個 Android 中的組件類 ;

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 ""; }

使用注解時 , 需要在類上添加如下注解 , 必須在注解中指定 path 對應的值 path = "library1" , 否則編譯報錯 ; 注解中的 group 默認為 "" , 不是必須的 , 可以省略 ;

@Route(path = "library1")



四、注解處理器模塊



" 注解處理器模塊 " 是 Java 工程 ;

注解處理器模塊 負責處理自定義注解 , 需要 自定義 AbstractProcessor 子類 , 該類就是 注解處理器 ;

注解處理器負責生成 Java 代碼 , 但是注解處理器本身的代碼是不會打包到 APK 中的 ;

注解處理器注冊的時候自動執行 , 即 執行注解處理器中的 process 函數 ;

注解處理器首選要進行注冊 , 可以使用 Google 提供的自動注冊工具 , 在注解處理器類上使用 @AutoService(Processor.class) 注解即可進行自動注冊 ;

package kim.hsl.router_compiler;import com.google.auto.service.AutoService;import java.util.Set;import javax.annotation.processing.AbstractProcessor; import javax.annotation.processing.Processor; import javax.annotation.processing.RoundEnvironment; import javax.lang.model.element.TypeElement;// 自動注冊注解處理器 @AutoService(Processor.class) public class RouterProcessor extends AbstractProcessor {@Overridepublic boolean process(Set<? extends TypeElement> set, RoundEnvironment roundEnvironment) {return false;} }

添加 com.google.auto.service:auto-service 依賴庫 ;

implementation 'com.google.auto.service:auto-service:1.0-rc2'

添加 自定義注解模塊 依賴庫 :

implementation project(':router-annotation')

完整 build.gradle 示配置例 :

plugins {id 'java-library' }java {sourceCompatibility = JavaVersion.VERSION_1_8targetCompatibility = JavaVersion.VERSION_1_8 }dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation project(path: ':router-annotation')annotationProcessor 'com.google.auto.service:auto-service:1.0-rc4'compileOnly 'com.google.auto.service:auto-service:1.0-rc4' }

注冊 Google 服務后的效果 :


下一篇博客 , 講解注解處理器的開發 ;





五、博客資源



博客源碼 :

  • GitHub : https://github.com/han1202012/Component
  • CSDN 下載 :

總結

以上是生活随笔為你收集整理的【Android 组件化】路由组件 ( 路由组件结构 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。