设为首页 加入收藏

TOP

Android路由框架-ARouter详解(非原创)(二)
2019-09-01 23:12:46 】 浏览:63
Tags:Android 路由 框架 -ARouter 详解 原创
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

/** * URL 中转Activity */ public class URLReceiveActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView( R.layout.activity_url_receive ); //对URI 数据分发 Uri uri = getIntent().getData(); ARouter.getInstance().build(uri).navigation(this, new NavCallback() { @Override public void onArrival(Postcard postcard) { finish(); } }); } } 

URLReceiveActivity 添加注册

<activity android:name=".URLReceiveActivity"> <!-- Schame --> <intent-filter> <data android:host="zhaoyanjun" android:scheme="arouter" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> </intent-filter> </activity> 

这里面的 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
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android屏幕适配讲解与实战(原创) 下一篇Android中资源的引用

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目