meituan/WMRouter

请问除了PageAnnotationHandler,能够添加一个局部降级策略的例子吗?

humanheima opened this issue · 1 comments

请问除了PageAnnotationHandler,能够添加一个局部降级策略的例子吗?

举个例子:假设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();