android路由框架SRouter
在你的项目根工程bulid.gradle中添加,让所有工程都依赖SRouter
api 'com.sarlmoclen.router:SRouter:0.0.1'
使用SApplication自定义自己的Application,主要是为了注册每个模块的消息通道,其中registerAction函数第一个参数定义的是通道名称,第二个是消息通道
public class MyApplication extends SApplication{
@Override
public void registerAction() {
SRouter.getInstance().registerAction(OneActionName.name, new OneAction());
SRouter.getInstance().registerAction(TwoActionName.name, new TwoAction());
SRouter.getInstance().registerAction(MainActionName.name, new MainAction());
SRouter.getInstance().registerAction(ThreeActionName.name, new ThreeAction());
}
}
自定义自己模块的消息通道,其中requestData为通道传递的数据
public class OneAction extends SAction{
@Override
public Object startAction(Context context, HashMap<String, Object> requestData) {
if(context instanceof Activity){
Intent i = new Intent(context, ChildActivity.class);
i.putExtra("from",requestData.get("from").toString());
context.startActivity(i);
}else{
Intent i = new Intent(context, ChildActivity.class);
i.putExtra("from",requestData.get("from").toString());
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
return "arrive one success!";
}
}
调用开启通道传递数据,.action(“此处设置通道名称”).data("此处设置给通道传的参数")
SRouterResponse mSRouterResponse = SRouter.getInstance().sendMessage(
ChildActivity.this, SRouterRequest.creat()
.action(OneActionName.name)
.data("from","from main"));
常规开发中,两个模块要实现相互调用,就需要相互依赖,然后才可以调起对方的程序,这种开发模式很容易造成程序 耦合度增加,后期很难维护,为了解决这个问题,参考路由的方式,建立路由器控制程序,所有的模块不再相互依赖, 而是都依赖这个路由器,通过路由器框架来处理所有模块之间的通信,这样就实现了模块之间的解耦。
The Apache Software License, Version 2.0 LICENSE