ARouter是阿里2017年开源的页面路由框架,是今年比较火的一个开源框架,目前在Github上已经有2.2k的小星星了。官方对这个框架的定义是ARouter是阿里巴巴开源的Android平台中对页面、服务提供路由功能的中间件,提倡的是简单且够用
Google提供的原声路由主要是通过intent,可以分成显示和隐式两种。显示的方案会导致类之间的直接依赖问题,耦合严重;隐式intent需要的配置清单中统一声明,首先有个暴露的问题,另外在多模块开发中协作也比较困难。只要调用startActivity后面的环节我们就无法控制了,在出现错误时无能为力,而ARouter可以在跳转过程中进行拦截,出现错误时可以实现降级策略。
要使用Arouter我们现在build.gradle引入:
annotationProcessor 'com.alibaba:arouter-compiler:1.1.4' compile'com.alibaba:arouter-api:1.3.1'
在项目工程下的build.gradle的dependencies下引入:
classpath "com.alibaba:arouter-register:1.0.2"
然后在application中的oncreate初始化:
ARouter.openLog(); ARouter.openDebug(); ARouter.init(this);
然后建立一个activity:
public class ArouterTest extends Activity {
public static void startActivity(Context context) {
Intent intent = new Intent();
intent.setClass(context,ArouterTest.class);
context.startActivity(intent);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.arouter_activity_main);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//页面
ARouter.getInstance().build("/test3/activity3").navigation();
}
});
findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TestService service = (TestService) ARouter.getInstance().build("/testservice/hello").navigation();
service.sayHello("hello sdsdf");
}
});
}
}和一个service:
@Route(path = "/testservice/hello")
public class TestServiceImpl implements TestService {
Context mContext;
@Override
public void sayHello(String name) {
Toast.makeText(mContext, "Hello " + name, Toast.LENGTH_SHORT).show();
}
/**
* Do your init work in this method, it well be call when processor has been load.
*
* @param context ctx
*/
@Override
public void init(Context context) {
mContext = context;
}
}在子工程mylibrary那里建立一个activity:
@Route(path = "/test3/activity3", name = "测试用 Activity")
public class MainActivity3 extends Activity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
}
}再建立一个service:
public interface TestService extends IProvider {
void sayHello(String name);
}运行效果:
点击页面路由就可以跳转去MainActivity3
点击服务路由就可以找到TestService那个服务,然后调用sayHello
點擊查看更多內(nèi)容
為 TA 點贊
評論
評論
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
