ARouter的navigation过程
之前讲了初始化流程,现在接着看navigation过程,先来一个使用示例 后面好举例
@Route(path = "/image/imageActivity")
class MainActivity : AppCompatActivity() {
@Autowired(name = "tip")
@JvmField
var mTip: String? = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
ARouter.getInstance().inject(this)
setContentView(R.layout.layout_activity_main)
findViewById<TextView>(R.id.mTvImageModule).setOnClickListener {
ARouter.getInstance().build("/login/loginActivity").navigation(this)
}
}
}
1.postcard制作过程
postcard何许人也,翻译是明信片,也就是路由信息类,里面存着路由数据uri, 携带参数,路径等等
protected Object navigation(final Context context, final Postcard postcard, final int requestCode, final NavigationCallback callback) {
PretreatmentService pretreatmentService = ARouter.getInstance().navigation(PretreatmentService.class);
if (null != pretreatmentService && !pretreatmentService.onPretreatment(context, postcard)) {
// Pretreatment failed, navigation canceled.
return null;
}
// Set context to postcard.
postcard.setContext(null == context ? mContext : context);
try {
LogisticsCenter.completion(postcard);
}
//省略代码
return null;
}
postcard保存了所有跳转类相关信息
1.设置postcard的context
2.调用LogisticsCenter.completion完善postcard信息
2.完善postcard信息
2.1 @Route生成的映射类(方便举例说明)
public class ARouter$$Group$$image implements IRouteGroup {
@Override
public void loadInto(Map<String, RouteMeta> atlas) {
atlas.put("/image/imageActivity", RouteMeta.build(RouteType.ACTIVITY, MainActivity.class, "/image/imageactivity", "image", new java.util.HashMap<String, Integer>(){
{
put("tip", 8); }}, -1, -2147483648));
}
}
2.2 完善postcard过程 稍长 忍一下
public synchronized static void completion(Postcard postcard) {
if (null == postcard) {
throw new NoRouteFoundException(TAG + "No postcard!");
}

最低0.47元/天 解锁文章
1086

被折叠的 条评论
为什么被折叠?



