Skip to content

🚀 Startup-Coroutine v0.2.0-beta 发布公告

Choose a tag to compare

@Dboy233 Dboy233 released this 29 Nov 13:46
· 14 commits to master since this release

🚀 Startup-Coroutine v0.2.0-beta 发布公告

API 进行了彻底的重构,引入了更加优雅的 Builder 构建模式、类型安全的 依赖注入机制 以及对 Android Lifecycle 的原生支持。
虽然引入了破坏性变更(Breaking Changes),但这些改进将极大地提升代码的可读性、安全性和灵活性。

✨ 新特性 (New Features)

  1. 🛠 全新的构建者模式 (Builder Pattern)告别冗长的构造函数参数!现在,你可以使用链式调用来优雅地配置启动参数。
Startup.Builder(application) 
.add(NetworkInitializer()) 
.add(DatabaseInitializer()) 
.setConfig(StartupConfig.ExecuteOnIO) // 一键配置线程模型 
.build() 
.start()
  1. 🧬 生命周期感知 (LiveData Support)

新增 Startup.observe(LifecycleOwner) 能力。现在,你可以在 SplashActivity 中直接通过 LiveData 监听启动状态,完美解决内存泄漏问题,并简化了 UI 交互逻辑。

Startup.observe(this) { result -> 
    if (result is StartupResult.Success) { 
        //initViewAndData()
        //jumpActivity()
    } 
}

⚠️ 破坏性变更 (Breaking Changes)

  1. 核心类变更: Startup 类的构造函数已私有化,必须通过 Startup.Builder 进行实例化。
  2. 接口签名变更: Initializer 的 init 方法签名由 (Context,DependenciesProvider) 变更为 (Application, DependenciesProvider)。请更新所有子类的实现。
  3. 回调变更: 推荐使用 Startup.observe 替代旧版构造函数中的 onResult 回调(虽然 Builder 依然保留了 onResult 接口,但 LiveData 是更推荐的方式)。

📝 迁移指南

  1. 修改 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()
}
  1. 修改启动调用
// 旧版 (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){...} 监听结果

感谢您对 Startup-Coroutine 的支持! 欢迎在 GitHub Issues 中反馈您遇到的问题.