当前仓库属于暂停状态,部分功能使用受限,详情请查阅 仓库状态说明
1 Star 0 Fork 14

yangmain / Component
暂停

forked from xiaojinziCoder / Component 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 6.80 KB
一键复制 编辑 原始数据 按行查看 历史
xiaojinziCoder 提交于 2019-06-05 22:20 . 更新 readme

Component

一个功能强大的组件化框架

Demo体验(扫码或者点击图片即可下载)

Component 的优势

组件化方案真的有很多,那么这个组件化方案优秀在哪里?相比于 ARouter,WMRouter,ActivityRouter,CC,DDComponent 等开源的组件化框架,有哪些一样或者优秀的点

  • 支持 androidx,几乎没有其他组件化框架支持 androidx
  • 支持业务组件生命周期(被加载和被卸载)
  • 整个设计贴近原生,对原生的代码入侵极少,尽最大的可能保留原生的代码
  • 在一些路由拦截器的执行线程的设计上,考虑到用户平时书写的 90% 代码都是在主线程的,
    所以路由拦截器的执行线程也设计为主线程执行,可以让您放心的操作 UI、弹框等操作.
    同时提供 Callback 机制可以在拦截器中做任何耗时的任务
    这点绝对是压倒性的优势
  • 配套的 Idea Plugin 方便快速浏览,持续会更新此插件
  • 路由的取消,基本上没有路由框架支持路由的取消,这也是一个很大的优势
    • 可以手动用代码取消
    • 路由自动取消,当发起路由的 Fragment 或者 Activity 销毁的时候会取消
  • 拦截器的种类有三种,足矣满足所有业务情况(具体看wiki)
    • 路由拦截器(针对某一次路由)
    • 页面拦截器(针对所有跳转到某一个界面的路由)
    • 全局拦截器(针对全部路由)
  • 目标界面的参数注入(目前仅支持基本数据类型,后续会支持Bundle中的所有类型)
  • 跳转
    • 自定义跳转(这样子就支持了第三方和系统的界面)
    • 自定义 Intent
  • 无缝对接 H5
  • 0 配置可以拿到目标界面返回的 ActivityResult,很多框架不支持或者需要入侵 BaseActivity
  • 服务发现和路由分开设计
    • 其实这两块本来就是两个方面,我不清楚为什么很多方案中都柔和在一块
  • Rx 扩展库扩展完美结合了 RxJava2

第一个最简单的 hello world

最简单的 hello world

更详细的使用

了解更多请看 wiki 更多功能等你来发现


@RouterApiAnno()
public interface AppApi {

    @HostAnno(ModuleConfig.Help.NAME)
    @PathAnno((ModuleConfig.Help.TEST_WEB_ROUTER))
    void goToTestWebRouter(Context context);

}

// 声明式路由接口调用
Router.withApi(AppApi.class).goToTestWebRouter(this);

轻松拿到目标界面 ActivityResult

Router.with(mTestContext.fragment())
        .host(ModuleConfig.Module1.NAME)
        .path(ModuleConfig.Module1.TEST_AUTORETURN)
        .requestCode(123)
        .navigateForIntent(new BiCallback<Intent>() {
            @Override
            public void onSuccess(@NonNull RouterResult result, @NonNull Intent intent) {      
            }

            @Override
            public void onCancel(@Nullable RouterRequest originalRequest) {
            }

            @Override
            public void onError(@NonNull RouterErrorResult errorResult) {
            }
        });

界面字段的注入

配套的跳转向导

RouterGoPlugin

一个帮助您识别路由和拦截器的库,减少您查找的时间,配合组件化使用

为了更好的能交流,这里新建了一个QQ群:870981195 或者扫描二维码来进群

License

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Android
1
https://gitee.com/yangsir/Component.git
git@gitee.com:yangsir/Component.git
yangsir
Component
Component
master

搜索帮助