请问除了PageAnnotationHandler,能够添加一个局部降级策略的例子吗?
humanheima opened this issue · 1 comments
humanheima commented
请问除了PageAnnotationHandler,能够添加一个局部降级策略的例子吗?
jzj1993 commented
举个例子:假设URL为"scheme://host/*",如果找到了path对应的Activity则跳转(Activity使用RouterUri注解配置),没找到则弹Toast提示。
代码实现:可以在lazyInit结束后找到对应的PathHandler,然后调用setDefaultChildHandler设置其默认的Handler,并弹Toast提示。
final DefaultRootUriHandler rootHandler = new DefaultRootUriHandler(context);
Router.init(rootHandler);
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... voids) {
Router.lazyInit();
PathHandler pathHandler = rootHandler.getUriAnnotationHandler().getPathHandler("scheme", "host");
if (pathHandler != null) {
pathHandler.setDefaultChildHandler(new UriHandler() {
@Override
protected boolean shouldHandle(@NonNull UriRequest request) {
return true;
}
@Override
protected void handleInternal(@NonNull UriRequest request, @NonNull UriCallback callback) {
ToastUtils.showToast(DemoApplication.sApplication, "page not found: " + request.getUri().toString());
}
});
}
return null;
}
}.execute();