注意事項:
1 ARouter的引用在Java和kotlin中不同
Kotlin (推薦)
1 在basemodule中添加引用
api 'com.alibaba:arouter-api:1.5.1'
kapt 'com.alibaba:arouter-compiler:1.5.1'
2 「每個module」中添加下面代碼(注意)
apply plugin: 'kotlin-kapt'
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName()]
}
}
kapt 'com.alibaba:arouter-compiler:1.5.1'
JAVA
1 在basemodule中添加引用
api 'com.alibaba:arouter-api:1.5.1'
annotationProcessor 'com.alibaba:arouter-compiler:1.5.1'
2 每個module中添加下面代碼(注意)
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName()]
}
}
annotationProcessor 'com.alibaba:arouter-compiler:1.5.1'
示例代碼:
image.png
步驟:
1 base目錄下創(chuàng)建IBaseService接口
2 創(chuàng)建IBaseService實現(xiàn)類丸氛,BaseService
3 被調(diào)用方receiver锅尘,定義路由TestService
4 調(diào)用方caller,獲取service對象蛀醉,獲取數(shù)據(jù)
base module
1 IBaseService
import com.alibaba.android.arouter.facade.template.IProvider
interface IBaseService<T> : IProvider {
fun getData(): T?
fun setData(t: T?)
}
2 BaseService
import android.content.Context
open class BaseService<T> : IBaseService<T> {
var t: T? = null
override fun getData(): T? {
return t
}
override fun init(context: Context?) {
}
override fun setData(t: T?) {
this.t = t
}
}
2 ProviderHelper (獲取service工具類)
import com.alibaba.android.arouter.launcher.ARouter
class ProviderHelper {
companion object {
fun getService(): BaseService<String?> {
return ARouter.getInstance().build("/test/receiver").navigation() as BaseService<String?>
}
}
}
receiver module
1 TestService
import com.alibaba.android.arouter.facade.annotation.Route
import com.example.base.BaseService
@Route(path = "/test/receiver")
class TestService : BaseService<String?>() {
override fun getData(): String? {
setData("sssss")
return super.getData()
}
}
caller module調(diào)用
var service = ProviderHelper.getService()
var msg = service.getData()
Toast.makeText(this@CallerActivity, msg, Toast.LENGTH_SHORT).show()