美文网首页
组件化开发-简单的路由

组件化开发-简单的路由

作者: 有腹肌的豌豆Z | 来源:发表于2020-10-16 14:18 被阅读0次

路由原理

动手写一个SimpleRouter,这个路由很简单主要是实现逻辑。
1.所有的Activity都注册到路由表。
2.界面跳转的时候从路由表里面获取对应的Class。进而界面跳转。

Demo

ZRouter路由表

public class ZRouter {

    private static final ZRouter zRouter = new ZRouter();

    private ZRouter() {

    }

    /**
     * 获取单列
     *
     * @return
     */
    public static ZRouter getInstance() {
        return zRouter;
    }

    /**
     * 路由表 将所有的Activity都注册到这里
     */
    private Map<String, Class<? extends Activity>> routers = new HashMap<>();

    /**
     * 将Activity注册到路由表
     *
     * @param key key
     * @param cls class
     */
    public void register(String key, Class<? extends Activity> cls) {
        routers.put(key, cls);
    }

    /**
     * 界面跳转
     *
     * @param activity 发起界面跳转的 activity
     * @param key      通过key获取注册好的目标 activity class
     */
    public void startActivity(Activity activity, String key) {
        Class<? extends Activity> aClass = routers.get(key);
        if (aClass != null) {
            activity.startActivity(new Intent(activity, aClass));
        }
    }

}

Application 注册当前所有用到的Activity

public class Application extends android.app.Application {

    @Override
    public void onCreate() {
        super.onCreate();

        // 初始化的时候将所有的Activity都注册到路由表中
        ZRouter.getInstance().register("main_2", MainActivity2.class);
        ZRouter.getInstance().register("main_3", MainActivity3.class);
    }
}

Activity发起界面跳转

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 点击跳转
        findViewById(R.id.btn_1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ZRouter.getInstance().startActivity(MainActivity.this, "main_2");
            }
        });

        findViewById(R.id.btn_2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ZRouter.getInstance().startActivity(MainActivity.this, "main_3");
            }
        });
    }
}

Demo

相关文章

  • 路由组件化

    撸一个简单路由RouteriOS 组件化与路由的本质App 的组件化之路

  • 框架封装

    Android 组件化 —— 路由设计最佳实践 业界最简单高效的路由方案 OkDeepLink被人忽视的面向对象的...

  • ARetrofit

    Android组件化超级路由,为简单而生。 Github 源码: ARetrofit demo demo apk ...

  • ARetrofit - Android组件化最佳路由

    Android组件化最佳路由,为简单而生。 Github 源码: ARetrofit demo demo apk ...

  • kotlin完成的项目

    项目是基于kotlin写的: Android 端: 1.使用组件化模块开发基于阿里ARouter封装的组件路由调用...

  • 插件化原理

    比较阿里开源组件化和插件化框架的区别 name模块化开发模块间路由动态加载热修复兼容性问题组件化ARouter支持...

  • iOS-组件化-(跳转+传参数)

    iOS开发中组件化之业务组件间通讯方式之路由[https://www.jianshu.com/p/862564d4...

  • 组件化开发-简单的路由

    路由原理 动手写一个SimpleRouter,这个路由很简单主要是实现逻辑。1.所有的Activity都注册到路由...

  • SogouModuleBus

    目前,组件化开发基本已经成为每一个公司必选的开发方案。开源的组件化路由框架也有很多,例如ARouter,CC等,作...

  • React(脚手架)——create-react-app撸api

    路由嵌套相当于vue的子路由,路由套路由 首先初始化布局 我自己简单写了一点css,编辑一下user组件 然后加点...

网友评论

      本文标题:组件化开发-简单的路由

      本文链接:https://www.haomeiwen.com/subject/wcyzpktx.html