由于阿里路由ARouter早已不维护更新,不得已迁移到新的路由框架TheRouter(货拉拉),由于我的需求,需要通过路径获取对应的activity的类名或者class,以前用arouter的时候,我是这样实现,可以看我这篇文章https://www.jianshu.com/p/9baebeaea080 现在换到TheRouter之后,需要重新实现。
在查看源码时发现,内部获取跳转信息的方法matchRouteMap,竟然可以直接调用此方法拿到路由表对应的信息,那这样就比较简单了,以下是代码
//kotlin实现
fun getRouRouteItem(path:String): RouteItem?{
return matchRouteMap(path)
}
fun getClassNameByPath(path:String):String?{
return getRouRouteItem(path)?.className
}
上面的方法可以拿到RouteItem,里面有对应activity的className,因此我们可以通过className再拿到class
//java实现
public static Class<Activity> getActivityClassByPath(String path) {
String name = TheRouterUtil.INSTANCE.getClassNameByPath(path);
if (!TextUtils.isEmpty(name)) {
try {
Class activityClass = Class.forName(name);
return activityClass;
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
return null;
}