大佬教程收集整理的这篇文章主要介绍了5步教你快速写一个android Router路由框架,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Router路由框架
什么是路由?说简单点就是映射页面跳转关系的,当然它也包含跳转相关的一切功能。
前言
网上大片的路由框架实在太多了,实现的方式都大同小异,通过注解实现路由表;但是在多module开发的时候怎么合并路由表,不同的框架有着自己的解决方案。
ARouter:通过类查找进行合并路由表。
ActivityRouter:通过注解进行路由表合并。
路由框架的意义
Android系统已经给我们提供了api来做页面跳转,比如startActivity,为什么还需要路由框架呢?我们来简单分析下路由框架存在的意义:
特性
Router有哪些特性或者优点呢?
开始
对于路由表的合并我采用了ActivityRouter的方案,进行注解合并路由表。
1.源码:
if (!hasModules && !hasModulE){ //普通app createrAppRouterHelper(); } if (hasModulE){ //保存每个module中的路由表 createrModuleHelper(moduleName); } if (hasModules){ //合并每个module中的路由表 createrRouterHelper(modulenames); }
2.用法:
app:
@H_721_0@module:3.备注:非多module开发以上直接省略直接初始化路由即可
初始化
程序内部界面之间跳转 通过 path 查找路由表中 对应的Activity 进行页面跳转。
外部跳转程序内部 通过 uri 拦截 Activity 对uri进行拦截处理并最终通过路由表查找 path进行跳转。
1.用法
基本用法
Router.geTinstance().path("second"); Router.geTinstance().action(MediaStore.ACTION_IMAGE_CAPTURE); Router.geTinstance().uri("https://www.waws.top/module?id=2&name=haha");
//同步request request = new request.builder(this).path("second").build(); Response response = Router.geTinstance().newCall(request).execute(); //异步request = new request.builder(this) .path("second") .responseCode(100) .resultCallBACk(new ResultCallBACk() { @Override public void next(int resultCode,Intent data) { RouterLog.d("resultCode:"+resultCode+"\ndata:"+data.getStringExtra("tag")); } }) .addoption(ActivityOptions.makeSceneTransitionAnimation(this,bt,"share").toBundle()) .build(); Router.geTinstance().skipIntecepter().newCall(request) .enqueue(new RouterCallBACk() { @Override public void next(Response responsE) { RouterLog.d(response.toString()); } });
拦截Activity onActivityResult 使用了代理Fragment进行动态拦截,有兴趣的可以看源码,地址在下边
拦截器
Router.addIntecepter(new RouterIntecepter() { @Override public request chain(request request) { //TODO: return request; } @Override public void onLost(String msg) { //TODO: Log.d("App","onLost: "+msg); } @Override public void onsuccess() { //TODO: Log.d("App","onsuccess: "); } });
外部跳转app内部进行如下配置
<activity android:name=".DispatcherActivity"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.bROWSABLE"/> <category android:name="android.intent.category.DEFAULT"/> <!-- start --> <!-- 修改如下data信息即可 --> <data android:scheR_604_11845@e="http" android:host="www.waws.top"/> <data android:scheR_604_11845@e="https" android:host="www.waws.top"/> <data android:scheR_604_11845@e="router" android:host="www.waws.top"/> <!-- end --> </intent-filter></activity>
源码地址:https://github.com/waws80/Router
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
以上是大佬教程为你收集整理的5步教你快速写一个android Router路由框架全部内容,希望文章能够帮你解决5步教你快速写一个android Router路由框架所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。