常见的Router使用方式是在一个Activity的类中使用注解标注
@MobRouterPath({“share_activity”})
public class ShareActivity extends Activity {
//省略代码
}
此处的MobRouterPath标注了这个ShareActivity的名称是什么,之后跳转使用你定义的名称,这里推荐这个名称使用常量来做,能更好的管理名称。
使用MobRouter来进行跳转
MobRouter.build(“share_activity”)
.bundle(***) //传入一个bundle
.with(***) //传入转场动画
.context(***) //传入指定的context,默认使用Application
.XXX //具体的方法可以自行扩展
.go();
此处可以使用各种扩展方法,比如传入转场动画等,就是对Android Api的封装,此处不赘述。
Router实现细节
Router可以使用两种方式进行跳转
- 使用反射,通过注解拿到对应的class然后进行跳转
- 使用APT,在编译时生成map,从map中查到对应的class进行跳转
使用反射的弊端是,反射是及其消耗性能的,Android官方推荐的是尽可能避免反射,使用APT生成代码的方式可以最大化的减少性能损耗,避免每次跳转都用反射来做。所以我们使用APT来做。
这是一个删掉了无用细节的APT类。
@AutoService(Processor.class)
@S