android 组件路由框架,XRouter:组件化路由框架

添加jitpack仓库

allprojects {

repositories {

...

maven { url 'https://jitpack.io' }

}

}

添加依赖:

dependencies {

//kotlin 使用kapt编译时依赖注解,Java使用annotationProcessor

kapt 'com.github.roger1245.XRouter:xrouter-compiler:1.0.2'

api 'com.github.roger1245.XRouter:xrouter-core:1.0.2'

}

添加配置:

android {

defaultConfig {

...

javaCompileOptions {

annotationProcessorOptions {

arguments = [moduleName: project.getName()]

}

}

}

初始化SDK:

public class XRouterApplication extends Application {

@Override

public void onCreate() {

super.onCreate();

XRouter.Companion.init(this);

}

}

添加注解:

@Route(path = Config.Module1Activity)

class Module1Activity : AppCompatActivity() {

...

}

发起路由操作:

//1.路由内通过path跳转另一个Activity

XRouter.sInstance.build(Config.Module1Activity).navigation()

通过aop方式获取服务

val hello: HelloService = XRouter.sInstance.build(Config.HELLO_SERVICE).navigation() as HelloService

hello.sayHello(this)

//实现接口

@Route(path = Config.HELLO_SERVICE)

public class HelloService implements IProvider {

@Override

public void init(Context context) {

Toast.makeText(context, "HelloService init successfully", Toast.LENGTH_SHORT).show();

}

public void sayHello(Context context) {

Toast.makeText(context, "HelloService: Hello", Toast.LENGTH_SHORT).show();

}

}

通过接口的方式发现服务:

val userService: IUserService? = XRouter.sInstance.navigation(IUserService::class.java)

userService?.login(this)

//实现接口

@Route(path = Config.USER_SERVICE_IMPL)

public class UserServiceImpl implements IUserService {

@Override

public void init(Context context) {

Toast.makeText(context, "UserServiceImpl init successfully", Toast.LENGTH_SHORT).show();

}

@Override

public void login(Context context) {

Toast.makeText(context, "UserServiceImpl login successfully", Toast.LENGTH_SHORT).show();

}

}

//实现IProvider接口

public interface IUserService extends IProvider {

public void login(Context context);

}

为了加快第一次进入应用的速度,可以通过gradle插件的方式利用ASM插入字节码,替代原来的运行时反射查找类文件的方式,如何引入:

根build.gradle引入:

buildscript {

...

dependencies {

....

classpath "com.github.roger1245.XRouter:xrouter-gradle-plugin:latestversion"

}

}

项目build.gradle引入:

apply plugin: 'xrouter'

即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值