Android 开发进程 0.34 ARouter Evenbus 使用

阿里路由框架ARouter使用

导入

GitHub地址 https://github.com/alibaba/ARouter

android {
    defaultConfig {
    javaCompileOptions {
        annotationProcessorOptions {
        arguments = [ moduleName : project.getName() ]
        }
    }
    }
}
dependencies {
    api 'com.alibaba:arouter-api:x.x.x'
    annotationProcessor 'com.alibaba:arouter-compiler:x.x.x'
}

使用时将库转换为最新版本,此库主要用于相关页面跳转,常规的activity跳转方式有显式和隐式,但这种方式在多module中由于需要相互引用,并不符合解耦的原则,同时维护变得非常繁琐。

初始化

 ARouter.openLog();     // 打印日志
 ARouter.openDebug();   // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
 ARouter.init( this );

大多在application中执行。

使用步骤

@Route(path = "/com/Activity1")

首先在需要跳转的activity类头上添加注解,这个path意思为分组和斜杠后面的路径。可以支持自定义分组。path需要至少二级路径。可以将path统一写到常量路由类中方便调用。

  ARouter.getInstance().build("/com/Activity1").navigation();

需要跳转时使用上述代码如在点击事件方法中,path需要保持一致。

   <intent-filter>
            <data
                android:host="com"
                android:scheme="arouter" />
       </intent-filter>

如果需要使用url跳转可以在manifest文件中activity中添加属性,这可以实现HTML与原生的交互。

ARouter.getInstance().build("/com/Activity1").navigation(this,100 );

如需要实现类似startActivityForResult()的返回处理可以添加请求吗。同时在链式调用中可以添加writeXX方法携带String bundle等类型数据,取出数据与基础的startActivity方法相同,在目标activity的生命周期方法中使用 getIntent方法继而通过传输键值对的key值获取value。或者使用注解@Autowired直接传递到变量中。
值得注意的是如果请求的path找不到框架会显示一个toast信息。

navigation(Context context, NavigationCallback callback)

navigati中支持处理回调。最新版本3.1.1支持两个回调,还有一个简单的NavCallback回调类,只支持路由的成功拉起和被拦截两个方法,而NavigationCallback方法较多。

interceptor拦截器使用

@Interceptor(priority = 2)
public class Test1Interceptor implements IInterceptor {
    @Override
    public void process(Postcard postcard, InterceptorCallback callback) {
        if (postcard.getPath().equals("/test/test1")) {
        }
        callback.onContinue(postcard);
    }
    @Override
    public void init(Context context) {
    }
}

上述代码自定义了拦截器,其中postcard.getPath()方法获取的就是路由的path,当path匹配时,可以return结束process方法,注意如无提前return,后续必须执行毁掉的onContinue方法,第二 优先值priority不可以与其他拦截器相同。第三 阿里路由是有缓存的,在刚创建或更改路由类时可能需要卸载安装app才能覆盖安装测试,否则可能出现不生效的问题。

吾生也有涯,而知也無涯。以有涯隨無涯,殆已
原文地址:https://www.cnblogs.com/baimiyishu/p/15291560.html