Repository navigation
🚀 Startup-Coroutine v0.2.0-beta 发布公告
🚀 Startup-Coroutine v0.2.0-beta 发布公告
API 进行了彻底的重构,引入了更加优雅的 Builder 构建模式、类型安全的 依赖注入机制 以及对 Android Lifecycle 的原生支持。
虽然引入了破坏性变更(Breaking Changes),但这些改进将极大地提升代码的可读性、安全性和灵活性。
✨ 新特性 (New Features)
- 🛠 全新的构建者模式 (Builder Pattern)告别冗长的构造函数参数!现在,你可以使用链式调用来优雅地配置启动参数。
Startup.Builder(application)
.add(NetworkInitializer())
.add(DatabaseInitializer())
.setConfig(StartupConfig.ExecuteOnIO) // 一键配置线程模型
.build()
.start()- 🧬 生命周期感知 (LiveData Support)
新增 Startup.observe(LifecycleOwner) 能力。现在,你可以在 SplashActivity 中直接通过 LiveData 监听启动状态,完美解决内存泄漏问题,并简化了 UI 交互逻辑。
Startup.observe(this) { result ->
if (result is StartupResult.Success) {
//initViewAndData()
//jumpActivity()
}
}⚠️ 破坏性变更 (Breaking Changes)
- 核心类变更: Startup 类的构造函数已私有化,必须通过 Startup.Builder 进行实例化。
- 接口签名变更: Initializer 的 init 方法签名由 (Context,DependenciesProvider) 变更为 (Application, DependenciesProvider)。请更新所有子类的实现。
- 回调变更: 推荐使用 Startup.observe 替代旧版构造函数中的 onResult 回调(虽然 Builder 依然保留了 onResult 接口,但 LiveData 是更推荐的方式)。
📝 迁移指南
- 修改 Initializer 实现
// 旧版 (v0.1)
class MyTask : Initializer<Unit>() {
override suspend fun init(context: Context, provider: DependenciesProvider) { ... }
override fun dependencies()= emptyList()
}
// 新版 (v0.2)
class MyTask : Initializer<Unit> {
override suspend fun init(context: Application, provider: DependenciesProvider) { ... }
//无依赖可不用实现 dependencies()
}- 修改启动调用
// 旧版 (v0.1)
val startup = Startup(context, list, callback)
startup.start()
// 新版 (v0.2)
val startup = Startup.Builder(application).add(list).build()
startup.start()
// 建议在 Activity 中通过 Startup.observe(this){...} 监听结果