Package com.therouter.TheRouter API 文档

Types

Autowired
链接已复制到剪贴板
annotation class Autowired
Annotation for parameters, which need autowired.
AutowiredItem
链接已复制到剪贴板
class AutowiredItem(type: String, key: String, id: Int, args: String, className: String, fieldName: String, required: Boolean, description: String)
IRouterMapAPT
链接已复制到剪贴板
interface IRouterMapAPT

Created by ZhangTao on 17/8/1.

Navigator
链接已复制到剪贴板
open class Navigator(url: String?, intent: Intent?)

路由导航器。与RouterItem作用类似,允许互转。 RouterItem 用于描述一个静态的路由项 Navigator 用于描述一个路由项的跳转动作

OnRouteMapChangedListener
链接已复制到剪贴板
interface OnRouteMapChangedListener
PendingNavigator
链接已复制到剪贴板
class PendingNavigator(navigator: Navigator, action: () -> Unit)

可以被挂起的导航器,通常用于延迟动作。 延迟跳转主要应用场景有两种: 第一种:初始化时期,如果路由表的量非常巨大时。这种情况在别的路由框架上要么会白屏一段时间,要么直接丢弃这次跳转。在TheRouter中,框架会暂存当前的跳转动作,在路由表初始化完成后立刻执行跳转。 第二种:从Android 8.0开始,Activity 不能在后台启动页面,这对于业务判断造成了很大的影响。由于可能会有前台 Service 的情况,不能单纯以 Activity 生命周期判断前后台。在TheRouter中,框架允许业务自定义前后台规则,如果为后台情况,可以将跳转动作暂存,当进入前台后再恢复跳转。

RegexpKeyedMap
链接已复制到剪贴板
class RegexpKeyedMap<V> : HashMap<String?, V?>

专门为路由服务,因为路由的path存在正则的情况

Route
链接已复制到剪贴板
annotation class Route
https://youtrack.jetbrains.com/issue/KT-12794 Kotlin 的 @Repeatable 不能注解到 Java class,得要到1.6才能支持,但是 Java 的却能注解到 Kotlin 代码,所以这个类只能写 Java 的 Created by ZhangTao on 17/8/11.
RouteItem
链接已复制到剪贴板
class RouteItem : Serializable

独立的一条路由记录

RouterMapInitTask
链接已复制到剪贴板
interface RouterMapInitTask
Routes
链接已复制到剪贴板
annotation class Routes
Created by ZhangTao on 17/8/11.

Functions

addNavigatorPathFixHandle
链接已复制到剪贴板
fun addNavigatorPathFixHandle(handle: NavigatorPathFixHandle)

应用场景:用于修复客户端上路由 path 错误问题。 例如:相对路径转绝对路径,或由于服务端下发的链接无法固定https或http,但客户端代码写死了 https 的 path,就可以用这种方式统一。 注:必须在 TheRouter.build() 方法调用前添加处理器,否则处理器前的所有path不会被修改。

addPathReplaceInterceptor
链接已复制到剪贴板
fun addPathReplaceInterceptor(interceptor: PathReplaceInterceptor)

页面替换器 应用场景:需要将某些path指定为新链接的时候使用。 也可以用在修复链接的场景,但是与 path 修改器不同的是,修改器通常是为了解决通用性的问题,替换器只在页面跳转时才会生效,更多是用来解决特性问题。

addRouteItem
链接已复制到剪贴板
fun addRouteItem(routeItem: RouteItem)

向路由表添加路由

addRouteMap
链接已复制到剪贴板
fun addRouteMap(routeItemArray: Collection<RouteItem>?)

向路由表添加路由

addRouterReplaceInterceptor
链接已复制到剪贴板
fun addRouterReplaceInterceptor(interceptor: RouterReplaceInterceptor)

路由替换器 应用场景:常用在未登录不能使用的页面上。例如访问用户钱包页面,在钱包页声明的时候,可以在路由表上声明本页面是需要登录的,在路由跳转过程中,如果落地页是需要登录的,则先替换路由到登录页,同时将原落地页信息作为参数传给登录页,登录流程处理完成后可以继续执行之前的路由操作。

asyncInitRouteMap
链接已复制到剪贴板
fun asyncInitRouteMap()

在异步初始化路由表

defaultNavigationCallback
链接已复制到剪贴板
fun defaultNavigationCallback(callback: NavigationCallback?)

自定义全局路由跳转结果回调

foundPathFromIntent
链接已复制到剪贴板
fun foundPathFromIntent(intent: Intent): String?

尝试通过Intent,从路由表中获取对应的路由Path 如果路由表中没有对应路由,则将类名作为路由Path新创建一条路由项

getFileListFromAssets
链接已复制到剪贴板
fun getFileListFromAssets(context: Context?, path: String?): Array<String>?
getStreamFromAssets
链接已复制到剪贴板
fun getStreamFromAssets(context: Context?, fileName: String?): InputStream?

从assets 文件夹中获取文件并读取数据流

getStringFromAssets
链接已复制到剪贴板
fun getStringFromAssets(context: Context, fileName: String?): String

从assets 文件夹中获取文件并读取数据

getUrlWithParams
链接已复制到剪贴板
fun RouteItem.getUrlWithParams(): String
fun RouteItem.getUrlWithParams(handle: NavigatorParamsFixHandle): String
fun RouteItem.getUrlWithParams(handle: (String, String) -> String): String

获取当前路由的完整url记录

initRouteMap
链接已复制到剪贴板
fun initRouteMap()

在主线程初始化路由表

matchRouteMap
链接已复制到剪贴板
fun matchRouteMap(url: String?): RouteItem?

尝试通过Path,从路由表中获取对应的路由项,如果没有对应路由,则返回null

matchRouteMapForClassName
链接已复制到剪贴板
fun matchRouteMapForClassName(className: String?): List<RouteItem>

尝试通过ClassName,从路由表中获取对应的路由项,如果没有对应路由,则返回空数组

removeNavigatorPathFixHandle
链接已复制到剪贴板
fun removeNavigatorPathFixHandle(interceptor: NavigatorPathFixHandle): Boolean

移除Path修改器

removePathReplaceInterceptor
链接已复制到剪贴板
fun removePathReplaceInterceptor(interceptor: PathReplaceInterceptor): Boolean
removeRouterReplaceInterceptor
链接已复制到剪贴板
fun removeRouterReplaceInterceptor(interceptor: RouterReplaceInterceptor): Boolean
sendPendingNavigator
链接已复制到剪贴板
fun sendPendingNavigator()

可以被挂起的导航器,通常用于延迟动作。 延迟跳转主要应用场景有两种: 第一种:初始化时期,如果路由表的量非常巨大时。这种情况在别的路由框架上要么会白屏一段时间,要么直接丢弃这次跳转。在TheRouter中,框架会暂存当前的跳转动作,在路由表初始化完成后立刻执行跳转。 第二种:从Android 8.0开始,Activity 不能在后台启动页面,这对于业务判断造成了很大的影响。由于可能会有前台 Service 的情况,不能单纯以 Activity 生命周期判断前后台。在TheRouter中,框架允许业务自定义前后台规则,如果为后台情况,可以将跳转动作暂存,当进入前台后再恢复跳转。

setOnRouteMapChangedListener
链接已复制到剪贴板
fun setOnRouteMapChangedListener(listener: OnRouteMapChangedListener?)

当路由项被改变时,会触发回调。例如路由项被覆盖、路由项内容发生变化

setRouteMapInitTask
链接已复制到剪贴板
fun setRouteMapInitTask(task: RouterMapInitTask?): Unit?
fun setRouteMapInitTask(task: () -> Unit)

设置自定义路由表初始化逻辑,设置后会在异步线程中调用自定义初始化逻辑 默认初始化逻辑为 initRouteMap()

setRouterInterceptor
链接已复制到剪贴板
fun setRouterInterceptor(interceptor: RouterInterceptor)
fun setRouterInterceptor(interceptor: (routeItem: RouteItem, callback: (RouteItem) -> Unit) -> Unit)

路由AOP拦截器 与前三个处理器不同的点在于,路由的AOP拦截器全局只能有一个。用于实现AOP的能力,在整个TheRouter跳转的过程中,跳转前,目标页是否找到的回调,跳转时,跳转后,都可以做一些自定义的逻辑处理。

toNavigator
链接已复制到剪贴板
fun RouteItem.toNavigator(): Navigator

将当前路由转换为导航器

Properties

gson
链接已复制到剪贴板
val gson: Gson
KEY_ACTION
链接已复制到剪贴板
const val KEY_ACTION: String
KEY_ANIM_IN
链接已复制到剪贴板
const val KEY_ANIM_IN: String
KEY_ANIM_OUT
链接已复制到剪贴板
const val KEY_ANIM_OUT: String
KEY_BUNDLE
链接已复制到剪贴板
const val KEY_BUNDLE: String
KEY_DESCRIPTION
链接已复制到剪贴板
const val KEY_DESCRIPTION: String
KEY_INTENT_FLAGS
链接已复制到剪贴板
const val KEY_INTENT_FLAGS: String
KEY_OBJECT_ACTIVITY
链接已复制到剪贴板
const val KEY_OBJECT_ACTIVITY: String
KEY_OBJECT_NAVIGATOR
链接已复制到剪贴板
const val KEY_OBJECT_NAVIGATOR: String
KEY_PATH
链接已复制到剪贴板
const val KEY_PATH: String