1.使用说明:
LBRoute路由是一款android路由跳转管理系统。支持两种方式
第一种:注解防方式
第二种:用户自定义
背景:LB是鲁班的简称luban,后期我会提供一系列lb库,解决开过过程存在的各种问题,一站式解决大家所有的问题,可以提供个性化基础库,能够让大多数人通过鲁班系列的依赖库,快速搭建自己的项目,提高开发速度,降低开发成本。
在application出初始化:
LBRouterDataManager manager=new LBRouterDataManager(getBaseContext(),"routeCode");
manager.initRoute();
manager.setWebViewActivity(Activity webview);
初始化需要传两个参数一个是路由key,这个key用来标识路由编号,在后期的使用过程中,通过这个key来取值,匹配到指定的Activity。 Context:是上下文,用来跳转
setWebViewActivity(Activity):是支持h5跳转,如果你的h5连接需要访问原生,需要在这边设定一个h5默认跳转的内部加载页,如果没有命中路由页面,将会跳转到你指定的h5页面。
定义一个自己的路由模块,
public class MyDefineModule extends LBBaseRouteModule {
@Override
public void route(String code, Intent intent) {
switch (Integer.parseInt(code)) {
case 123:
intent.setClass(mContext, TestActivity.class);
intent.setFlags(FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
break;
}
}
}
中新增LBDefineRouteModule.getInstance().regist("mymodi",new MyDefineModule());
由于LBDefineRouteModule在LBRouterDataManager已初始化,不需要再次初始化了
3.1LBRouteView是对Activity类的注解
@LBRouteView(routeCode = "123",className = "com.wiik.lubanroute.action.TestActivity")
public class TestActivity extends AppCompatActivity{
}
routeCode:路由编号
className:class.getname()【 当前的类名:com.wiik.lubanroute.action.TestActivity】
3.2LBRouteMethod方法注解:用于跳转过程中,参数获取携带参数的方法
@LBRouteMethod(cls = TestActivity.class,routeMethodName = "getRouteData")
public Bundle getRouteData() {
Bundle bun=new Bundle();
bun.putString("key","注解传值");
return bun;
}
cls:指向当前Activity
routeMethodName:该方法名
配合路由使用,可以支持多方法
LBRouteModule.routeCodeActivity(TestActivity.this.getClass(),"123","getRouteData");
arg1:当前类的class,
arg2:页面路由编号
arg3:参数跳转的参数方法名称
Bundle bundle=new Bundle();
bundle.putString("key","bundle手动传值");
LBRouteModule.routeCodeActivity("123",bundle);
arg1:页面路由编码
arg2:参数的参数
String url="www.aaa.com?routeCode=123&key=routeCodevalue";
LBRouteModule.routeUrlActivity(url);
String url="www.aaa.com?routeCode=123&key=routeCodevaluedefine";
LBRouteModule.routeDefineUrlActivity(url);
Bundle bundle=new Bundle();
bundle.putString("key","bundle 自定义手动传值");
LBRouteModule.routeDefineActivity("123",bundle);
这边逻辑在自定义MyDefineModule方法中处理
switch (Integer.parseInt(code)) {
case 123:
intent.setClass(mContext, TestActivity.class);
intent.setFlags(FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
break;
}
1.集成:依赖库implementation 'com.github.it90msart:LBRoute:1.0.0'
如果你的项目需要混淆:
混淆-keep class com.wiik.lubanroute.action.**{*;}