sp

Project Url: luqinx/sp
Introduction: 组件化开发过程中,随着组件越来越多,组件的之前的交互就会变得非常的复杂,此时组件间通信变得尤其的重要,ServicePool 就是为组件化而生,用最简单的方式进行组件间通信。使用依赖注入,按需灵活注入组件。同时支持组件热插拔,达到组件即插即用的效果。可配置组件生命周期,做到组件按需创建和及时回收,充分利用懒加载的思想,有效解决组件初始化耗时导致的 app 启动速度问题
More: Author   ReportBugs   
Tags:

GitHub license build release 掘金

ServicePool 接入方法

spa 已迁移至 mavenCentral, groupId 已修正为 io.github.luqinx, 包名还保持原来的包名

在项目根目录的 build.gradle 中引入

allprojects {
    repositories {
        ...
        mavenCentral()
    }
}

buildscript {

    repositories {
        ...
        mavenCentral()
    }
    dependencies {
        ...
        classpath 'io.github.luqinx:autoservice:1.7.0'
    }
}

在主 Module 目录(一般是 app 目录)的 build.gradle 中添加

apply plugin: 'sp.autoservice'

...

其他 Module 下按需添加依赖

dependencies {
    implementation 'io.github.luqinx:sp:1.7.0' //servicepool 核心库, 是 java 库, 非 android 环境用这个就可以了
    implementation 'io.github.luqinx:spa:1.7.0' // servicepool 的 Android 支持(spa), 只依赖 spa 也是可以的
    implementation 'io.github.luqinx:sprouter:1.7.0' // 基于 spa 的页面路由
}

混淆配置


-ignorewarnings

-dontwarn com.google.common.**

-dontwarn net.bytebuddy.**

-keep class net.bytebuddy.** {*;}
-keep class com.android.** {*;}

-keep @chao.java.tools.servicepool.annotation.* class *
-keep @chao.android.tools.rpc.annotation.* class ** {*;}

-keep class chao.android.tools.** {*;}
-keep class chao.java.tools.** {*;}

ServicePool 使用方式

在 Application 的 onCreate()/onAttachBaseContext()方法中初始化

ServicePool 使用懒加载思想,所有服务 Service 对象都是在真正使用的时刻才会去创建和初始化。这里主要是因为 Android 部分功能依赖 Context, 初始化时可注入 ApplicationContext。还有有些特定的服务有预加载的需求(如业务组件可能需要一个特定的初始化场景,而不是去依赖 Application 的 onCreate()方法)

   Spa.init(this); //初始化耗时 10ms 左右, 设备不同可能会有些差异, 我测试的设备是小米 mix3

Spa 的更多使用细节,请参考博客Android 端简单易用的 SPI 框架 - SPA

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools