什么是ARoute
阿里ARoute是阿里巴巴开源的一款Android路由框架,用于解决组件化开发中的页面跳转问题。
核心功能
- 页面路由:支持Activity、Fragment的路由跳转
- 服务发现:通过接口查找服务实现
- 拦截器机制:支持全局和局部拦截
- 自动注入:支持参数自动注入
基本使用
1. 添加依赖
1 2
| implementation 'com.alibaba:arouter-api:1.5.2' annotationProcessor 'com.alibaba:arouter-compiler:1.5.2'
|
2. 初始化
1 2 3 4 5
| if (isDebug()) { ARouter.openLog(); ARouter.openDebug(); } ARouter.init(application);
|
3. 页面配置
1 2 3 4
| @Route(path = "/test/activity") public class TestActivity extends AppCompatActivity { }
|
4. 页面跳转
1 2 3 4
| ARouter.getInstance() .build("/test/activity") .withString("key", "value") .navigation();
|
高级特性
- 拦截器使用
1 2 3 4 5 6 7 8 9 10 11
| @Interceptor(priority = 8, name = "登录拦截器") public class LoginInterceptor implements IInterceptor { @Override public void process(Postcard postcard, InterceptorCallback callback) { if (needLogin(postcard)) { } else { callback.onContinue(postcard); } } }
|
- 服务发现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public interface HelloService extends IProvider { void sayHello(String name); }
@Route(path = "/service/hello") public class HelloServiceImpl implements HelloService { @Override public void sayHello(String name) { Toast.makeText(context, "Hello " + name, Toast.LENGTH_SHORT).show(); } }
HelloService helloService = ARouter.getInstance().navigation(HelloService.class); helloService.sayHello("ARoute");
|
常见问题
路由表生成失败
参数注入失败
- 使用@Autowired注解的字段不能是private
- 确保参数名称一致
总结
ARoute是Android组件化开发中非常实用的路由框架,能有效解耦模块间的依赖关系。