p;
在跳转的页面中添加监听代码
运行结果如下:
拦截器使用
添加需要跳转的页面
添加拦截器
在主页面进行跳转拦截测试
路由分组
在前面我们讲到在对 Activity1 做注解的时候,用到了
@Route(path = "/com/Activity1") public class Activity1 extends AppCompatActivity {}
??在 path 这个字符串里面,”com” 就代表组的标识;“Activity1” 代表是 Activity1 类的具体表示。组的标识和类的标识都可以自己定义的,需要记住的是组标识和类标识之间用斜杠来区分 ”\” .
什么是组?
??这里就需要提下,ARouter框架是分组管理,按需加载。提起来很高深的样子呢!其实解释起来就是,在编译期框架扫描了所有的注册页面/服务/字段/拦截器等,那么很明显运行期不可能一股脑全部加载进来,这样就太不和谐了。所以就分组来管理,ARouter在初始化的时候只会一次性地加载所有的root结点,而不会加载任何一个Group结点,这样就会极大地降低初始化时加载结点的数量。比如某些Activity分成一组,组名就叫test,然后在第一次需要加载组内的某个页面时再将test这个组加载进来。
测试一下:
ARouter.getInstance()
.build("/wxc/Activity1") .navigation(this, new NavCallback() { @Override public void onArrival(Postcard postcard) { String group = postcard.getGroup(); Log.e("zhao", "分组是: " + group); } });
结果是
07-27 17:32:17.880 19449-19449/com.router E/zhao: 分组是: wxc
ARouter 默认情况下的分组就是第一个 / / 之间的内容。
自定义分组
??创建 CustomGroupActivity 并且添加 注解,并且指定路由分组。自定义分组的就是在原来的注解上添加 group 字段, 如下所示。
@Route(path = "/com/CustomGroupActivity" , group = "customGroup") public class CustomGroupActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_custom_group); } }
自定义分组,发起路由:第二个参数就是路由的分组
build(String path, String group)
具体实现如下所示:
ARouter.getInstance().build("/com/CustomGroupActivity", "customGroup").navigation();
URL 跳转
web url 跳转流程图
创建URL 中间跳转页
创建 URLReceiveActivity
URLReceiveActivity 添加注册
<activity android:name=".URLReceiveActivity">
这里面的 host 、scheme 字段很重要。点击 url 会根据这两个字段会调起本地的 Activity 。
下面是一段 HTML 片段
<h2>1:URL普通跳转</h2> <p><a href="arouter://zhaoyanjun/com/URLActivity1">arouter://zhaoyanjun/com/URLActivity1 </a> </p> <h2>2:URL普通跳转携带参数</h2> <p> <a href="arouter://zhaoyanjun/com/URLActivity2?name=alex&age=18&boy=true&high=180&obj=%7b%22name%22%3a%22jack%22%2c%22id%22%3a666%7d">arouter://zhaoyanjun/test/URLActivity2?name=alex&age=18&boy=true&high=180&obj={"name":"jack","id":"666"} </a&g