平时在项目中 ,实现Activity的跳转都是使用的startActivity来实现的。今天发现一个路由框架,不但可以很好的实现这个功能,而且还有其他的一些 。

android 原生activity跳转代码:

     Intent intent = new Intent(this,OtherActivity.class);     intent.putExtra("key","ARouter");     startActivity(intent);

ARouter 简单用法

  1. 在gradle 文件中加入依赖
    app gradel 文件中添加
apply plugin: 'com.neenbedankt.android-apt'}apt {    arguments {        moduleName project.getName();    }}dependencies {      apt 'com.alibaba:arouter-compiler:1.0.1'      compile 'com.alibaba:arouter-api:1.0.2'}

project gradle

buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'    }}allprojects {    repositories {        jcenter()    }}
  1. activity页面跳转
    新建一个目标Activity , 并在类名上添加Route注解,注意path 名称是有要求的
  • 必须是以 / 开头
  • 必须包括两个 / ,比如 /main/test ,否则会抛异常
if (StringUtils.isEmpty(path) || !path.startsWith("/")) {            throw new HandlerException(Consts.TAG + "Extract the default group failed, the path must be start with '/' and contain more than 2 '/'!"); }
@Route(path = "/main/test")public class OtherActivity extends AppCompatActivity {        String key;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_other);        TextView textView = (TextView) findViewById(R.id.text);        key = getIntent().getStringExtra("key");        if (!TextUtils.isEmpty(key)){            textView.setText(key);        }else{            textView.setText("无参数");        }    }}

启动activity 的代码如下:

 @Override    public void onClick(View v) {        switch (v.getId()){            case R.id.btn1:// 不带参数启动                ARouter.getInstance()                        .build("/main/test")                        .navigation();                break;            case R.id.btn2:// 传递参数启动                ARouter.getInstance()                        .build("/main/test")                        .withString("key","ARoute")                        .navigation();                break;

进阶用法

ARouter.openLog();//开启日志ARouter.openDebug();//启动debug 模式, 这样一些log日志可以显示出来

其他进阶用法,如根据scheme启动 、 拦截器等 可以参考github 项目文档 。

学习中遇到的问题

  1. 按照文档配置好后,点击按钮,没有实现页面跳转 ,这个问题现在也没有搞明白,在github上提出issue后,作者那边运行我的demo代码很正常,后来我把代码打包成apk文件,安装运行,跳转功能就正常了,真是见鬼了 。
    日志信息:
01-11 23:21:21.053 5815-5815/demo.com.svddemo I/ARouter::: ARouter openLog[ ] 01-11 23:21:21.053 5815-5815/demo.com.svddemo I/ARouter::: ARouter openDebug[ ] 01-11 23:21:21.053 5815-5815/demo.com.svddemo I/ARouter::: ARouter init start.[ ] 01-11 23:21:21.062 5815-5815/demo.com.svddemo D/ARouter::: LogisticsCenter has already been loaded, GroupIndex[0], InterceptorIndex[0], ProviderIndex[0][ ] 01-11 23:21:21.062 5815-5815/demo.com.svddemo I/ARouter::: ARouter init success![ ] 01-11 23:21:21.062 5815-5815/demo.com.svddemo I/ARouter::: Thread production, name is [ARouter task pool No.1, thread No.1][ ] 01-11 23:21:21.062 5815-5815/demo.com.svddemo I/ARouter::: ARouter init over.[ ] 

里面 GroupIndex 索引为0,没有发现任何路由映射,应该是没有生成映射文件 。

参考文档

github 项目地址

更多相关文章

  1. Android自学之路,主界面的搭建Drawerlayout的使用
  2. Android中ViewPager and HorizontalScrollVIew 冲突
  3. 【Android(安卓)Studio】AS 使用记录06「常用快捷键」
  4. Android(安卓)Studio第一次启动失败的解决办法
  5. react-native之module的使用
  6. Android中visibility属性
  7. Android(安卓)ART 的初始化和启动
  8. Android(安卓)装载器---启动装载器
  9. Android(安卓)通过initrc控制命令、服务启动时间

随机推荐

  1. 在java中构建高效的结果缓存
  2. java中Locks的使用
  3. java 8中 predicate chain的使用
  4. java 8 stream中的Spliterator简介
  5. Java函数式编程和Lambda表达式
  6. java并发中CountDownLatch的使用
  7. java 8中构建无限的stream
  8. 在java中使用JMH(Java Microbenchmark Har
  9. java.util.concurrent简介
  10. java中Comparable和Comparator的区别