Arouter 使用一些问题

1.以Im插件为例 PluginEntryPlugin中增加几个关键注册类(small插件中注意要处理下)

    @PluginInitalizer
    @JvmField
    var initalizer: IPluginInitalizer? = null

    private fun doInit() {
       。。。。此处省略
        
        //Arouter 的group 注册到map中 ,没注册,会报group 找不到匹配的
        ARouter.getInstance().inject(this)
        if (initalizer != null) {
            ARouter.getInstance().addPluginRouteMap(initalizer)
        }
    }

2.在kotlin中使用@Autowired 使用的注意
在.java文件中使用@Autowired,不允许使用private 修饰(Arouter框架需要直接调用,不允许私优化)

在kotlin中 不加修饰符,默认也是私优化的,也就是内部重写了get ,set方法

    @Autowired(name = ImConstants.EXTRA_UID)
    @JvmField
    var mSysUid = 0L

    @Autowired(name = ImConstants.EXTRA_USER_NAME)
    @JvmField
    var mName: String? = null

解决办法:加上 @JvmField ,相当于public了,

3.调整需要传入一个Context(非插件化项目,其实不传没问题)

没有传context的情况下
    fun toSysActivity(sysUid: Long, sysName: String?) {
            val builder = ARouter.getInstance().build(ImConstants.AROUTE_SYS_ACTIVITY_PATH)
                    .withLong(ImConstants
                            .EXTRA_UID, sysUid)
            sysName?.let {
                builder.withString(ImConstants.EXTRA_USER_NAME, it)
            }
            builder..navigation()
        }
报错:
2020-12-08 17:15:39.642 11479-11479/com.yy.dreamer E/ARouter::: _navigation error : java.lang.ClassCastException: com.yy.dreamer.BearApp cannot be cast to android.app.Activity[ThreadId=2 & ThreadName=main & FileName=ARouterTwo.java & ClassName=com.alibaba.android.arouter.launcher.ARouterTwo$2 & MethodName=run & LineNumber=438 ]

增加Context后,正常

    fun toSysActivity(activity: Context?, sysUid: Long, sysName: String?) {
        activity?.let {
            val builder = ARouter.getInstance().build(ImConstants.AROUTE_SYS_ACTIVITY_PATH)
                    .withLong(ImConstants
                            .EXTRA_UID, sysUid)
            sysName?.let {
                builder.withString(ImConstants.EXTRA_USER_NAME, it)
            }
            builder.withOptionsCompat(options(it)).navigation(it)
        }
    }

你可能感兴趣的:(Arouter 使用一些问题)