感知组件生命周期
JKPacket参考了android的JetPack的部分思想,使响应式编程在框架层面能够感知到组件生命周期的变化。如果处于活跃状态该组件下触发的变化通知就会立即被触发;如果处于非活跃状态,该组件下触发的变化通知会处于pending状态,并保留最新的数据,等到组件状态重新变为活跃时,使用pending的最新数据重新触发一次变化通知。备注:这里的组件可以是UI组件,也可以是提供事务处理能力的非UI组件或者服务
融合RXSwift
JKPacket融合了RXSwift,因此在监听数据变化的时候,通过在onSubject这个回调内,可以充分基于RXSwift进行特殊处理,比如:指定监听的线程是否在主线程,debouce,throttle等大部分的RXSwift操作都能在这里进行设置。开发者也不用关心RXSwift的dispose相关操作,框架层面已经帮大家处理好了。让开发者能够根据业务需求对需要监听的数据进行各种的装饰操作,也降低了RXSwift的使用门槛。
lifecycleAge.observe(owner: self, onSubject: { subject in
//此处可以使用RXswift相关的知识对监听的数据进行装饰性操作
return subject.debounce(RxTimeInterval.seconds(1), scheduler: MainScheduler.instance)
}) { value in
print("JKObserveLifeCycleDataViewController value:\(String(describing: value))")
}
支持数据回放变化
JKPacket中KReplayObserver,JKReplayLiveData配合起来实现了在组件处于不活跃状态时把接收到的变化数据都暂存起来,等到组件的状态变成活跃状态时,按照顺序将暂存的变化数据依次发送出来。满足了某些业务场景下组件恢复到活跃状态时,需要回放非活跃状态接收的数据。