using System; using UniRx; namespace TimeManager { /// /// 统一 Tick 服务实现 - 管理秒级和分钟级的定时器。 /// 构造时即启动 Interval;须在业务启动链中显式 Resolve<TimeRefreshManager>()(如 ActivityManager.Init 开头),以挂上跨天/跨小时逻辑。 /// Stop 后需再调 Start() 恢复。 /// public class TimeTickService : ITimeTickService, IDisposable { private IObservable _secondTick; private IObservable _minuteTick; private bool _isStarted; public TimeTickService() { EnsureStarted(); } public IObservable SecondTick => _secondTick; public IObservable MinuteTick => _minuteTick; public void Start() => EnsureStarted(); private void EnsureStarted() { if (_isStarted) return; _secondTick = Observable.Interval(TimeSpan.FromSeconds(1f)); _minuteTick = Observable.Interval(TimeSpan.FromMinutes(1f)); _isStarted = true; } public void Stop() { _secondTick = null; _minuteTick = null; _isStarted = false; } public void Dispose() { Stop(); } } }