Android高工面试:如果需要实现一个-路由(Router,移动端h5页面适配

本文详细介绍了如何在Android中实现一个自定义路由框架,包括如何进行自定义注入、结果回调,以及整个框架的工作原理。通过注解处理,支持多模块使用,实现了Router框架的动态生成代码,同时提供了路由跳转的结果回调机制。文章还深入探讨了router-annotion、router-compiler等关键组件的实现细节。
摘要由CSDN通过智能技术生成

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_2);
}
}

这样就可以支持多模块使用了。

自定义注入 router

Router.getInstance().add(“activity/three”, ThreeActivity.class);

跳转的时候调用

Router.getInstance().build(“activity/three”).navigation(this);

结果回调

路由跳转结果回调。

Router.getInstance().build(“my/activity/main”, new RouterCallback() {
@Override
public boolean beforeOpen(Context context, Uri uri) {
// 在打开路由之前
Log.i(TAG, “beforeOpen: uri=” + uri);
return false;
}

// 在打开路由之后(即打开路由成功之后会回调)
@Override
public void afterOpen(Context context, Uri uri) {
Log.i(TAG, “afterOpen: uri=” + uri);

}

// 没有找到改 uri
@Override
public void notFind(Context context, Uri uri) {
Log.i(TAG, “notFind: uri=” + uri);

}

// 发生错误
@Override
public void error(Context context, Uri uri, Throwable e) {
Log.i(TAG, “error: uri=” + uri + “;e=” + e);
}
}).navigation(this);

startActivityForResult 跳转结果回调

Router.getInstance().build(“activity/two”).navigation(this, new Callback() {
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i(TAG, “onActivityResult: requestCode=” + requestCode + “;resultCode=” + resultCode + “;data=” + data);
}
});


原理说明

实现一个 Router 框架,涉及到的主要的知识点如下:

  1. 注解的处理
  2. 怎样解决多个 module 之间的依赖问题,以及如何支持多 module 使用
  3. router 跳转及 activty startActivityForResult 的处理

我们带着这三个问题,一起来探索一下。

总共分为四个部分,router-annotion, router-compiler,router-api,stub

router-annotion 主要是定义注解的,用来存放注解文件

router-compiler 主要是用来处理注解的,自动帮我们生成代码

router-api 是对外的 api,用来处理跳转的。

stub 这个是存放一些空的 java 文件,提前占坑。不会打包进 jar。

router-annotion

主要定义了三个注解

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.CLASS)
public @interface Route {
String path();
}

@Retention(RetentionPolicy.CLASS)
public

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值