Android路由框架 - ARouter使用(一) Activity跳转

ARouter是阿里开源的一款路由框架,他可以方便的去跳转界面,并自动注入参数到目标页面中,处理组件化模式开发,Module间的跳转及通信。

ARoutter-Github地址

在组件化模式开发时,以前应该会遇到过需要跳转其他模块的Activity或Service,去引用其他module就会造成引用非常乱,还会出现循环引用

想跳转就需要隐式跳转,而且要配置Manifest和Intent跳转,难以维护,代码混乱。

 

那么使用ARouter就可以处理这些问题,首先配置gradle引用

//api
api 'com.alibaba:arouter-api:1.3.1'
//注解处理器(每个需要配置的Module都要引用,否则会匹配不到该Module下的route)
annotationProcessor 'com.alibaba:arouter-compiler:1.1.4'

然后在defaultConfig下配置

//注解预处理时需要的字段,每个需要配置的Module都要配置,否则匹配不到该Module下的Route
javaCompileOptions {
       annotationProcessorOptions {
          arguments = [moduleName :project.getName() ]
       }
}

 配置好了以后进行初始化

public class MyApplication extends Application {

    //是否是调试模式
    private static final boolean isDebug = true;

    @Override
    public void onCreate() {
        super.onCreate();
        if(isDebug) {
            //开启日志
            ARouter.openLog();
            //开始调试模式,如果在DEBUG下不设置的话 在移动修改某些类或配置会出问题,因为有些东西判断版本号变更使用了缓存,开启的话每次会重新获取
            ARouter.openDebug();
        }
        //ARouter 初始化
        ARouter.init(this);
    }
}

有MainActivity和SimpleActivity,想要实现跳转的话,需要先配置路由 (可将path 配置到一个常量类中进行管理维护) 

⚠️ path 最少2级 /xxx/xxx

@Route(path = "/app/MainActivity")
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ARouter.getInstance().inject(this);
    }
}


@Route(path = "/app/SimpleActivity")
public class SimpleActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_simple);

        ARouter.getInstance().inject(this);
    }
}

配置好路由后在MainActivity通过以下api跳转

ARouter.getInstance().build(“/app/SimpleActivity”).navigation();

这样简单的跳转就完成了,下面携带参数进行跳转,在SimpleActivity声明全局变量,通过Autowired注解自动注入

    @Autowired
    String id;

    @Autowired
    int type;

 然后在MainActivity跳转使用withxxx 携带参数,和Intent一样 String,int 等基础数据类型都支持,对象的传递需要序列化实现Parcelable 或 Serializable

ARouter.getInstance().build("/app/SimpleActivity")
                    .withString("id","e235425jjfjkd")
                    .withInt("type",2)
                    //.withParcelable("person",new Person("gong",27))
                    .navigation(this,123); 
//第二个参数123为requestCode ,相当于startActivityForResult

跳转过去以后就可以直接使用变量了,不需要在手动获取。

组件间的跳转是一样的,无特殊处理,就不需要隐式跳转了。

Activity跳转大概就这些了,拜拜。

Android路由框架 - ARouter使用(二)模块间Service通信调用

 

你可能感兴趣的:(Android框架,android,移动开发)