RxRouter -- 一个轻量级、简单、智能并且强大的安卓路由库,彻底帮你搞懂

 override fun onCreate() {
    super.onCreate()
    RxRouterProviders.add(MainRouterProvider())
}

}


最后,就可以开始我们的表演了:

RxRouter.of(context)
.route(“this is a uri”)
.subscribe()


### 参数传递

携带参数跳转:

通过with方法,你可以给本次路由添加一系列参数.

RxRouter.of(context)
.with(10) //int value
.with(true) //boolean value
.with(20.12) //double value
.with(“this is a string value”) //string value
.with(Bundle()) //Bundle value
.route(“this is a uri”)
.subscribe()


### 不再需要 `onActivityResult` 方法了

想要获取跳转返回的值?再也不用写一大堆 `onActivityResult` 方法了!链式调用,一步到位!

RxRouter.of(context)
.with(false)
.with(2000)
.with(9999999999999999)
.route(“this is a uri”)
.subscribe {
if (it.resultCode == Activity.RESULT_OK) {
val intent = it.data
val stringResult = intent.getStringExtra(“result”)
result_text.text = stringResult
stringResult.toast()
}
}


如果有结果返回,在subscribe中处理就行了.

### Class 跳转

不想用Url注解?没问题,RxRouter同样支持原始的指定类名的跳转方式,和url跳转的方式相同:

RxRouter.of(context)
.routeClass(ClassForResultActivity::class.java)
.subscribe{
if (it.resultCode == Activity.RESULT_OK) {
val intent = it.data
val stringResult = intent.getStringExtra(“result”)
result_text.text = stringResult
stringResult.toast()
}
}


### Action 跳转

同样的,RxRouter也支持系统的Action和自定义的Action跳转.

自定义Action跳转:

`````` RxRouter.of(context) .routeAction("zlc.season.sample.action") .subscribe({ "no result".toast() }, { it.message?.toast() }) ```

系统Action跳转:

//拨打电话
RxRouter.of(this)
        .addUri(Uri.parse("tel:123456"))
        .routeSystemAction(Intent.ACTION_DIAL)
        .subscribe()

//发送短信
val bundle = Bundle()
bundle.putString("sms_body", "这是信息内容")
RxRouter.of(this)
        .addUri(Uri.parse("smsto:10086"))
        .with(bundle)
        .routeSystemAction(Intent.ACTION_SENDTO)
        .subscribe() 

防火墙

RxRouter拥有一个小巧而强大的防火墙,能够在路由之前根据防火墙的规则进行拦截,您可以添加一个或者多个防火墙.

//创建一个LoginFirewall
class LoginFirewall : Firewall {
    override fun allow(datagram: Datagram): Boolean {
        if (notLogin) {
            "您还没有登录,请先登录".toast()
 
上一篇:Mage 类似make&&rake 基于golang 的build 工具


下一篇:[RxJS] Share vs ShareReply